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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |