我工作的一个Struts 2的项目,问题是,我使用 <constant name="struts.ui.theme" value="simple"/>,我struts.xml为我的JSP页面的布局(如2-3个安排在一行中使用tablecode textfiled)按应用CSS,但我不能表演由于导致同一jsp页面上的验证错误theme="simple"。
<constant name="struts.ui.theme" value="simple"/>
struts.xml
theme="simple"
组态:
<struts> <!-- Configuration for the default package. --> <constant name="struts.ui.theme" value="simple"/> <package name="default" extends="struts-default"> <action name="validateUser" class="login.LoginAction"> <result name="SUCCESS">/welcome.jsp</result> <result name="input">/login.jsp</result> </action> </package> </struts>
行动:
public class LoginAction extends ActionSupport{ private String username; // getter and setter private String password; // getter and setter @Override public String execute() { // some business logic here.... return "SUCCESS"; } //simple validation @Override public void validate(){ if("".equals(getUsername())){ addFieldError("username", getText("username.required")); } if("".equals(getPassword())){ addFieldError("password", getText("password.required")); } } }
视图:
<s:form action="validateUser" validate="true" > <table> <tr> <td>username</td> <td><s:textfield label="username" name="username" /><td/> </tr> <tr> <td>password</td> <td><s:password label="password" name="password" /><td/> <tr> <td> <s:submit label="submit" name="submit"/></td> </tr> </table> </s:form>
有没有办法维护CSS的布局并使用Struts 2验证?
当然!XHTML主题将自动fieldError为您的输入标签添加标签;
fieldError
相反,在使用“简单”主题时,您需要手动添加它们,并为标签提供一个ID以使其匹配(除非它将自动生成,并且更难发现):
<td> <s:textfield id="username" label="username" name="username" /> <s:fielderror fieldName="username" /> </td> <td> <s:password id="password" label="password" name="password" /> <s:fielderror fieldName="password" /> </td>
PS:我猜这些是错别字,错误只在问题中,而不是在真实代码中,但是您有:
<td/>
<tr>
<td>``colspan="2"