Проверка и тема в Struts 2

Я работаю над проектом Struts 2, проблема в том, что я использую <constant name="struts.ui.theme" value="simple"/> в моем struts.xml для макета моей страницы JSP (например, размещение 2-3 текстовых файлов в одну строку с использованием табличного кода) в соответствии с примененным CSS, но я не могу показать ошибку проверки на той же странице 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>

Действие:

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?

1 ответ

Решение

Конечно! Тема XHTML автоматически добавит fieldError тег для ваших входных тегов;

вместо этого, если вы используете простую тему, вам нужно добавить их вручную и дать идентификаторы тегам, чтобы они соответствовали им (если только он не будет автоматически сгенерирован и его будет сложнее обнаружить):

<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>, а также
  • <tr> с одним <td> без colspan="2" указано.
Другие вопросы по тегам