Struts 2中的验证和主题

Tap*_*kul 6 css java validation jsp struts2

我正在开发一个Struts 2项目,问题是我<constant name="struts.ui.theme" value="simple"/>在我struts.xml的JSP页面的布局中使用 (例如,根据应用的CSS,在一行中使用tablecode安排2-3个textfiled)但是我无法显示由于相同的jsp页面上的验证错误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>
Run Code Online (Sandbox Code Playgroud)

行动:

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"));
        }
    }       
}
Run Code Online (Sandbox Code Playgroud)

视图:

<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>
Run Code Online (Sandbox Code Playgroud)

有没有办法用我的CSS维护布局,还使用Struts 2验证?

And*_*ios 4

当然!XHTML主题会自动fieldError为您的输入标签添加一个标签;

相反,当使用 Simple 主题时,您需要手动添加它们,并为您的标签提供一个 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>
Run Code Online (Sandbox Code Playgroud)

PS:我想这些是拼写错误,错误仅存在于问题中,而不是真实的代码中,但你有:

  • 自关闭<td/>,
  • 一个未封闭的<tr>, 和
  • a<tr>带单,<td>不带colspan="2"指定。