java – 使用struts2将枚举映射到表单元素
|
我正在尝试创建一个包含单选按钮的表单,该按钮映射到扩展
java.lang.Enum的类.
<s:form action="corp_low_save"> <s:textfield label="Corporate Client Name" name="name"/> <s:radio list="clientStatus.status" name="clientStatus.status"/> <s:textfield label="Primary Address Street" name="primaryAddress.street"/> <s:submit /> </s:form> Action实现ModelDriven并通过getModel()创建以下对象的新实例: public class com...Customer extends java.lang.Object{
protected java.lang.String name;
protected com...ClientStatus clientStatus;
protected com...Address primaryAddress;
public com...Customer();
public java.lang.String getName();
public void setName(java.lang.String);
public com...ClientStatus getClientStatus();
public void setClientStatus(com...ClientStatus);
public com...Address getPrimaryAddress();
public void setPrimaryAddress(com...Address);
}
以下是其他相关课程.它们都是由JAXB生成的: public class com...ClientStatus extends java.lang.Object{
protected com...StatusString status;
protected javax.xml.datatype.XMLGregorianCalendar since;
protected java.lang.String business;
public com...ClientStatus();
public com...StatusString getStatus();
public void setStatus(com...StatusString);
public javax.xml.datatype.XMLGregorianCalendar getSince();
public void setSince(javax.xml.datatype.XMLGregorianCalendar);
public java.lang.String getBusiness();
public void setBusiness(java.lang.String);
}
public final class com...StatusString extends java.lang.Enum{
public static final com...StatusString NEW_CLIENT;
public static final com...StatusString EXISTING_CLIENT;
public static final com...StatusString RENEWAL;
public static com...StatusString[] values();
public static com...StatusString valueOf(java.lang.String);
public java.lang.String value();
public static com...StatusString fromValue(java.lang.String);
static {};
}
我收到这个错误:
关于问题可能是什么的任何想法? 编辑: <s:radio name="clientStatus.status"
list="#{'NEW_CLIENT':'New Client','EXISTING_CLIENT':'Existing Client','RENEWAL':'Renewal'}"/>
或者,在控制器中,我必须显式实例化我的视图所需的Customer字段.这也破坏了我希望编写一个可以处理各种JAXB对象的通用操作,只需实例化给定的JAXB类并通过getModel()使其可用. 任何人都有任何想法如何从这种不幸的事态中恢复过来? 编辑2:修复了我希望工作的第一个表格. 解决方法
修订后的答案
当错误消息指出:
它表示java.util.Enumeration,而不是枚举. 话虽如此,你仍然可以使用枚举,你只需要传递一个数组或你想要的值的集合.例如,ClientStatus.values(),它返回一个数组. 只需在名为getClientStatuses的动作中添加一个getter,它返回所有值的数组(或集合). 原始答案 list属性需要获取所有枚举值.在您的第一个示例中,它看起来不会发生.相反,您提供的是clientStatus.这不是一个单独的枚举值吗? 在修改后的示例中,您为列表属性提供了一个映射,因此它正在运行. 我经常在动作中公开枚举值.例如,getClientStatuses. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
