Как получить значение из макета формы MAF (форма только для чтения) со страницы AMX?

У меня форма только для чтения. Я хочу удалить форму, связанную с идентификатором задачи, если пользователь нажмет кнопку Да. Но я не могу зафиксировать значение taskid, чтобы отправить его в свой класс java. Как я могу этого добиться? Я пытаюсь сделать это, но не могу удалить, потому что не получаю значения из макета формы.

Я хочу знать, как отправить значение taskid (value = "# {bindings.taskId.inputValue}") через кнопку "Да" с actionListener = "# {closeTask.click}" в мой класс java.

Вот моя страница amx.

<?xml version="1.0" encoding="UTF-8" ?>

<amx:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:amx="http://xmlns.oracle.com/adf/mf/amx"

          xmlns:dvtm="http://xmlns.oracle.com/adf/mf/amx/dvt">

  <amx:panelPage id="pp1" >

    <amx:facet name="header">

      <amx:outputText value="Task Details" id="ot1"/>

    </amx:facet>

    <amx:facet name="primary">

      <amx:commandButton id="cb1" action="__back"/>

    </amx:facet>

    <amx:facet name="secondary">

      <amx:commandButton id="cb2"/>

    </amx:facet>

    <amx:validationGroup id="group2">

      <amx:panelFormLayout id="pfl1">

        <amx:panelLabelAndMessage label="#{bindings.taskId.hints.label}" id="plam2">

          <amx:outputText value="#{bindings.taskId.inputValue}" id="ot3"

                          rendered="#{bindings.taskId}"/>

        </amx:panelLabelAndMessage>

        <amx:panelLabelAndMessage label="#{bindings.taskType.hints.label}" id="plam1">

          <amx:outputText value="#{bindings.taskType.inputValue}" id="ot2"/>

        </amx:panelLabelAndMessage>

        <amx:panelLabelAndMessage label="#{bindings.taskName.hints.label}" id="plam3">

          <amx:outputText value="#{bindings.taskName.inputValue}" id="ot5"/>

        </amx:panelLabelAndMessage>

      </amx:panelFormLayout>

    </amx:validationGroup>







    <amx:commandButton text="DELETE" id="cb3"   inlineStyle="left:150px;"  >

    <amx:validationBehavior id="validationBehavior2" group="group2"/>



     <amx:showPopupBehavior popupId="popup1"

                                align="topStart" alignId="pp1" type="action" decoration="anchor" id="spb1"/>



                                 </amx:commandButton>

  </amx:panelPage>

   <amx:popup id="popup1"



              animation="slideUp"

              backgroundDimming="on"

              autoDismiss="true">

    <amx:commandButton text="No" id="cb4" action="__back"/>

    <amx:outputText value="Are you sure?" id="ot4"/>

   <amx:commandButton text="Yes" id="cb5"  actionListener="#{closeTask.click}" />          FROM HERE I AM GETTING THE ISSUE.

    </amx:popup>

</amx:view>

person Pulkit    schedule 22.01.2018    source источник


Ответы (1)


Есть несколько способов получить доступ к значению привязки в классе java. Сначала попробуйте использовать метод closeTask.click:

        ValueExpression ve =
        AdfmfJavaUtilities.getValueExpression("#{bindings.taskId.inputValue}", String.class);
    String taskId = (String) ve.getValue(AdfmfJavaUtilities.getELContext());

В качестве альтернативы вы можете добавить propertylistener для передачи временной переменной в вашу кнопку:

<amx:commandButton text="Yes" id="cb5">
   <amx:setPropertyListener from="#{bindings.taskId.inputValue}" 
     to="#{viewScope.YourBean.valueHolder}" type="action" id="spl5"/>
            </amx:commandButton> 

И вызовите closeTask.click при изменении vauleHolder: в YourBean.java:

private String valueHolder; //declare var

  public void setValueHolder(String valueHolder) {
  this.valueHolder = valueHolder;
  closeTask.click(valueHolder) // call your method here with passed taskid
}

Я надеюсь, что это помогает.

person Magnus    schedule 20.03.2018