我是ADF的新手,面臨一些問題:我的頁面中有一個af:selectOneChoice
組件,其中包含數據列表。selectOneChoice in ADF
我想要在用戶從selectOnceChoice
組件列表中選擇一個選項時獲取所選值。
我已經使用了請求bean和一個參數,並將它綁定到組件的屬性檢查器中的value選項,但是它沒有給出選定的值。我怎樣才能從selectOneChoice
組件獲得選定的值?
我是ADF的新手,面臨一些問題:我的頁面中有一個af:selectOneChoice
組件,其中包含數據列表。selectOneChoice in ADF
我想要在用戶從selectOnceChoice
組件列表中選擇一個選項時獲取所選值。
我已經使用了請求bean和一個參數,並將它綁定到組件的屬性檢查器中的value選項,但是它沒有給出選定的值。我怎樣才能從selectOneChoice
組件獲得選定的值?
您可以使用ValueChangeListener
的selectOnceChoice
組件。在valueChangeListener
,你可以把它綁定到一個bean類方法和調用API來獲取新的或舊的值selectOnceChoice
組件:
public void selectOnceChoiceValue(ValueChangeEvent valueChangeEvent){
if(valueChangeEvent != null) {
Object newVal = valueChangeEvent.getNewValue();
Object oldVal = valueChangeEvent.getOldValue();
}
}
<af:selectOneChoice id="soc1" simple="true" autoSubmit="true"
valueChangeListener="#{ExtnEmailNotificationPFBean.recipientTypeValue}"
label="#{''}"
binding="#{ExtnEmailNotificationPFBean.recipientTypeValue}"
partialTriggers="cl2"
value="#{pageFlowScope.ZcxEaNotificationRecipientType}">
<f:selectItems id="si4"
value="#{pageFlowScope.ZcxEaRecipientsTypeValueList}"/>
</af:selectOneChoice>
根據您需要的值一個選項做什麼是以下方法在您的支持bean
public void valueChanged(ValueChangeEvent valueChangeEvent) {
this.setValueToEL("#{bindings.Deptno.inputValue}", valueChangeEvent.getNewValue()); //Updates the model
System.out.println("\n******** Selected Value: "+resolveExpression("#{bindings.Deptno.attributeValue}"));
System.out.println("\n******** Display Value: "+resolveExpression("#{bindings.Deptno.selectedValue ne ' ' ? bindings.Deptno.selectedValue.attributeValues[1] : ''}"));
}
public Object resolveExpression(String el) {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
ValueExpression valueExp = expressionFactory.createValueExpression(elContext,el,Object.class);
return valueExp.getValue(elContext);
}
public void setValueToEL(String el, Object val) {
FacesContext facesContext = FacesContext.getCurrentInstance();
ELContext elContext = facesContext.getELContext();
ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
ValueExpression exp = expressionFactory.createValueExpression(elContext, el, Object.class);
exp.setValue(elContext, val);
}
,你JSP組件應該像
<af:selectOneChoice value="#{bindings.Deptno.inputValue}" label="Select Department"
required="true" shortDesc="#{bindings.Deptno.hints.tooltip}"
id="soc1" autoSubmit="true">
<f:selectItems value="#{bindings.Deptno.items}" id="si1"/>
</af:selectOneChoice>
從http://blogs.oracle.com/adf/entry/getting_selected_value_from_selectonechoice
如果你正在尋找更多的連接到支持組件的視圖對象的連接,你會看到類似的東西,這將實時顯示你的文本。
public void buttonPressed(ActionEvent actionEvent) {
// Get the binding
BindingContainer bindings =
BindingContext.getCurrent().getCurrentBindingsEntry();
// Get the sepecific list binding
JUCtrlListBinding listBinding =
(JUCtrlListBinding)bindings.get("DepartmentId");
// Get the value which is currently selected
Object selectedValue = listBinding.getSelectedValue();
System.out.println(selectedValue);
}
從http://blogs.oracle.com/shay/entry/getting_the_value_from_a_selec
如果我這樣做是正確,你的問題是該值,你已經與af:selectOneChoice
選擇將可在綠豆,只能提交後。如果是這樣的話,那麼你應該讓用戶提交表單,或者將autoSubmit
組件的屬性設置爲true
。
這應該這樣做:
<af:selectOneChoice id="sampleId"
value="#{bindings.sampleAttribute.inputValue}"
label="#{bindings.sampleAttribute.label}"
valueChangeListener=#"{Bean.valueChangeListener}"
immediate="true" autoSubmit="true">
<f:selectItems id="sampleAttributeValues"
value="#{bindings.sampleAttribute.items}"/>
</af:selectOneChoice>
和bean將有:
public void valueChangeListener(ValueChangeEvent valueChangeEvent)
{
FacesContext.getCurrentInstance().renderResponse();
}
如果使用自動提交屬性設置爲「真」一定要設置直接爲「true」,以及。否則,將在頁面級激發驗證。
發佈jsf源碼。 –