0

首先,在页面中,将 Button 文本设置为“编辑”并显示。

当我单击“编辑”按钮时,按钮文本将变为“完成”,同时它会执行一个操作以在页面上呈现一些复选框。

在我选择一些复选框后,单击“完成”按钮,它将执行另一个操作。

我不知道如何在 ADF Mobile 中执行此操作。我们可以只使用一个按钮来完成所有这些吗?

谢谢!


我选择使用两个按钮,这是我的代码:

  <amx:facet name="secondary">
  <amx:commandButton id="cb2" text="#{viewcontrollerBundle.EDIT}" rendered="#{viewScope.editMode == ''}">
    <amx:setPropertyListener id="spl1" from="EditMode" to="#{viewScope.editMode}" type="action"/>
  </amx:commandButton>
  <amx:commandButton id="cb3" text="#{viewcontrollerBundle.DONE}" rendered="#{viewScope.editMode == 'EditMode'}">
    <amx:actionListener id="al1" binding="#{bindings.removeFromImageList.execute}"/>
    <amx:setPropertyListener id="spl2" from="" to="#{viewScope.editMode}" type="action"/>
  </amx:commandButton>
</amx:facet>

单击编辑按钮时,此代码可以显示 DONE 按钮。在我的测试页面中,它可以工作。但是当我将它们放入我的项目页面时,它无法立即显示完成按钮。我应该转到上一页,然后再回到该页,然后会显示 DONE 按钮。你知道为什么吗?

4

1 回答 1

0

您可以使用相同的按钮进行操作。您可以将按钮的文本字段的值设置为 bean 的属性。而在同一个bean中的函数动作监听器中,您可以根据文本执行不同的动作。

AMX 页面看起来像

<amx:commandButton text="{applicationScope.myBean.buttonText}" id="cb3" styleClass="actions-button" actionListener="#{applicationScope.myBean.myListener}"></amx:commandButton>

bean 应该看起来像

public class Class1 {
    private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);

    public Class1() {
        super();
    }

    private String textButton;

    public void myListener(ActionEvent ae) {
        if (textButton.equals("Edit")) {
            //DO THE ACTION WHICH NEEDS TO BE DONE FOR EDIT BUTTON
            setTextButton("Done");
        } else if (textButton.equals("Done")) {
            //DO THE ACTION FOR DONE BUTTON
        }
    }

    public void setTextButton(String textButton) {
        String oldTextButton = this.textButton;
        this.textButton = textButton;
        propertyChangeSupport.firePropertyChange("textButton", oldTextButton, textButton);
    }

    public String getTextButton() {
        return textButton;
    }

    public void addPropertyChangeListener(PropertyChangeListener l) {
        propertyChangeSupport.addPropertyChangeListener(l);
    }

    public void removePropertyChangeListener(PropertyChangeListener l) {
        propertyChangeSupport.removePropertyChangeListener(l);
    }
}
于 2014-08-07T05:39:45.280 回答