【问题标题】:Using a Enum with a ActionParam使用带有 ActionParam 的枚举
【发布时间】:2012-10-22 09:06:13
【问题描述】:

我在我的 JSF 2.0 和 RichFaces 4.0 中使用以下代码。我有一个有枚举的托管 bean。现在我想通过 ActionParam 分配枚举的值。我怎样才能做到这一点?代码如下:

<a4j:commandLink id="pendingTransactions"
        action="#{tellerBean.getPendingTransactions}" value="Show Pending"
        styleClass="button category-btn">
    <a4j:actionparam name="first" value=""
        assignTo="" />  
</a4j:commandLink>

和我的托管 bean:

@ManagedBean
@SessionScoped
public class TellerBean implements Serializable{

    public enum TransactionType {
        PENDING,PROCESSED,ALL
    }

    private static final long serialVersionUID = -321111;
    private String recipientID;
    private String recipientName;
    private String transactionAmount;
    private TransactionType transactionType;


    public String getRecipientID() {
        return recipientID;
    }

    public void setRecipientID(String recipientID) {
        this.recipientID = recipientID;
    }

    public String getRecipientName() {
        return recipientName;
    }

    public void setRecipientName(String recipientName) {
        this.recipientName = recipientName;
    }

    public String getTransactionAmount() {
        return transactionAmount;
    }

    public void setTransactionAmount(String transactionAmount) {
        this.transactionAmount = transactionAmount;
    }

    public void searchTransactions() {}

    public TransactionType getTransactionType() {
        return transactionType;
    }

    public void setTransactionType(TransactionType transactionType) {
        this.transactionType = transactionType;
    }

    public void getTransactions() {}
}

现在我想将transactionType 变量的值赋给一个枚举值。我该怎么做?

【问题讨论】:

    标签: jsf richfaces


    【解决方案1】:

    我不知道你想对变量做什么或如何显示它,所以这里是一个通用示例。

    首先,JSF 页面必须能够“迭代”枚举以发现可能的值。我以h:selectOneMenu 为例,使用f:selectItems 填充。 f:selectItems 需要 List&lt;&gt; 作为输入,因此我们需要在 TellerBean 中创建一个方法:

    public List<TransactionType> getTransactionTypes()
    {
        List<TransactionTypes> tt = new ArrayList<TransactionType>();
        for (TransactionType t : TransactionType.values())
        {
            tt.add(new TransactionType(t, t.toString()))
        }
        return tt;
    }
    

    然后是一个示例 JSF 页面:

    <h:form>
        <h:selectOneMenu value="#{tellerBean.transactionType}">
            <f:selectItems value="#{tellerBean.transactionTypes}"/>
        </h:selectOneMenu>
        <h:commandButton value="Submit" action="#{tellerBean.someMethod}"/>
    </h:form>
    

    JSF 页面应该显示一个包含枚举值的下拉列表。当单击标有“提交”的按钮时,它会在TellerBean 中执行someMethod()。当然这不起作用,因为该方法不存在,但这只是一个示例。 ;-)

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 2010-10-01
      • 1970-01-01
      • 2013-06-25
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      相关资源
      最近更新 更多