Using a Enum with a ActionParam

筅森魡賤 提交于 2019-12-12 04:42:52

问题


I am using the following piece of code in my JSF 2.0 with RichFaces 4.0. I have a managed bean that has an enum. Now i want to assign the value of the enum via an ActionParam. How can I do this? Here is the code:

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

and my managed 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() {}
}

Now I want to assign the value of the transactionType variable to an Enum value. How can I do this?


回答1:


I don't know what you want to do with the variable or how you want to display it, so here's a generic example.

First of all, the JSF page must be able to 'iterate' over the enum to discover the possible values. I'm using h:selectOneMenu as an example which is filled using f:selectItems. f:selectItems expects a List<> as input so we need to create a method in the 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;
}

Then for an example JSF page:

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

The JSF page should display a drop-down list with the values of the enum. When clicking the button labeled "Submit" it executes someMethod() in TellerBean. Of course this doesn't work because the method doesn't exist, but it's just an example. ;-)



来源:https://stackoverflow.com/questions/13008047/using-a-enum-with-a-actionparam

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!