выберите один выбор в АПД - PullRequest
       6

выберите один выбор в АПД

0 голосов
/ 25 августа 2011

Я новичок в ADF и столкнулся с некоторыми проблемами: на моей странице есть компонент af:selectOneChoice, который содержит список данных.

Я хочу получить выбранное значение, когда пользователь выбирает одну опцию из списка selectOnceChoice компонента.

Я использовал компонент запроса с параметром и связал его с параметром значения в инспекторе свойств компонента, но он не смог выдать выбранное значение. Как я могу получить выбранное значение из компонента selectOneChoice?

Ответы [ 5 ]

3 голосов
/ 12 сентября 2011

Вы можете использовать ValueChangeListener из selectOnceChoice компонента.В valueChangeListener вы можете привязать его к методу класса бина и вызвать 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>
1 голос
/ 06 февраля 2012

В зависимости от того, что вам нужно сделать с опцией value one, следующие методы в вашем компоненте поддержки

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

0 голосов
/ 16 декабря 2012

Если вы используете для свойства autoSubmit значение «true», обязательно установите для немедленного значения также значение «true».В противном случае проверка будет выполняться на уровне страницы.

0 голосов
/ 14 декабря 2012

Это должно сделать:

<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>

и боб будет иметь:

public void valueChangeListener(ValueChangeEvent valueChangeEvent)
{
    FacesContext.getCurrentInstance().renderResponse();  
}
0 голосов
/ 11 августа 2012

Если я правильно понял, ваша проблема в том, что значение, выбранное вами с помощью af:selectOneChoice, будет доступно в бине только после отправки.Если это так, то вы должны либо позволить пользователю отправить форму, либо установить для свойства autoSubmit компонента значение true.

.
...