Struts 2 XML验证不起作用

时间:2014-01-20 17:04:39

标签: java spring jsp validation struts2

大家好,我正在尝试在我的表单上使用验证,我在样本中做了所有的事情并用Google搜索了很多次以找到解决方案但不幸的是我无法解决我的问题。

我的问题是:当我点击提交按钮时显示为空,它向数据库注册空,验证不起作用!!!!!!!!!!!!

我正在使用struts2 tomcat7 jdk7 spring4 hibernate3和sitemesh 2.4.2

任何人都可以帮助我

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
    "http://struts.apache.org/dtds/struts-2.3.dtd">  

<struts>  

    <constant name="struts.custom.i18n.resources" value="ApplicationResources"/>  
    <constant name="struts.ui.theme" value="xhtml"/>  
    <constant name="struts.devMode" value="true"/>  
    <!--<constant name="struts.objectFactory" value="spring" />-->  


    <package name="json" namespace="/" extends="json-default">  
        <action name="state2CityAction" class="state2CityAction">  
            <result name="SUCCESS" type="json" />  
        </action>  
    </package>  


    <package name="default" namespace="/" extends="struts-default">  

        <interceptors>  
            <interceptor-stack name="myStack">  
                <interceptor-ref name="defaultStack">  
                    <param name="validation.excludeMethods">prepareNewInterView,prepare,list,previous,next,load,delete,prepareNewPersonnel,loadPayments,loadTeacherSalary,  
                        searchInterViewed,findActives,findFrozen,findCanceled,findCanceled,findEducated,searchStudentBaseGroupLesson,prepareSearchStudentPayments,loadPersonnel4FishRegister,  
                        prepareGroups4Score,prepareSearchStudentStatus,loadPersonnelFullPayment,listGroupLesson,listGroupLesson4Assign,prepareNewTeacher,listTeacher,prepareSearchTeacherSalary,find,  
                        prepareSearchPersonnelSalaryRedirect,prepareSearchCostsPaymentRedirect,prepareSearchTeacher2AssignAccountNumber,createOtherRedirect,  
                        prepareSearchPersonnel2AssignAccountNumber,listHesabCari,updateInterViewed,loadTeacherPaymentDetails4Edit,loadTeacherFullPayment,  
                        loadTeacherPaymentDetails4Delete,prepareSearchPersonnelSalaryRedirect</param>  
                </interceptor-ref>  
            </interceptor-stack>  
        </interceptors>  


        <default-interceptor-ref name="myStack"/>  
        <default-action-ref name="index" />  

        <global-results>  
            <result name="error">/error.jsp</result>  
        </global-results>  

     <action name="listBank" class="bankInfoAction" method="list">  
            <result name="success">/listBank.jsp</result>  
        </action>  

        <action name="createBank" class="bankInfoAction" method="create">  
            <result name="success">/listBank.jsp</result>  
            <result name="input">/createBank.jsp</result>  

        </action>  


        <action name="updateBank" class="bankInfoAction" method="update">  
            <result name="input">/updateBank.jsp</result>  
            <result name="success">/listBank.jsp</result>  
        </action>  

        <action name="deleteBankInfo" class="bankInfoAction" method="delete">  
        <result name="input">/deleteBank.jsp</result>  
        <result name="success">/listBank.jsp</result>  
        </action>  

        <action name="load2EditBank"  class="bankInfoAction" method="load">  
            <result name="success">/editBank.jsp</result>  
        </action>  

        <action name="load4DeleteBank"  class="bankInfoAction" method="load">  
            <result name="success">/deleteBank.jsp</result>  
        </action>  

BankInfoAction-validation.xml

    <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"  
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">  
<validators>  
    <field name="bankInfo.bankName">  
        <field-validator type="required">  
            <message key="errors.required"/>  
        </field-validator>  
    </field>  

</validators>  

这是我的实体

BankInfo.java

    @Entity  
public class BankInfo {  

    @Id  
    @TableGenerator(name = "ct_key", table = "keys_tbl", allocationSize = 70, initialValue = 11)  
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "ct_key")  
    long id;  
    String bankName;  

    public BankInfo() {  
    }  

    public BankInfo(String bankName) {  
        this.bankName = bankName;  


    public long getId() {  
        return id;  
    }  

    public void setId(long id) {  
        this.id = id;  
    }  

    public String getBankName() {  
        return bankName;  
    }  

    public void setBankName(String bankName) {  
        this.bankName = bankName;  
    }  

    public String toString(){  
        return bankName  ;  
    }  

}  

我的行动

BankInfoAction.java

    import com.opensymphony.xwork2.ActionSupport;  
import com.opensymphony.xwork2.ModelDriven;  
import org.apache.struts2.interceptor.ParameterAware;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.context.annotation.Scope;  
import org.springframework.stereotype.Component;  

import java.util.ArrayList;  
import java.util.List;  
import java.util.Map;  

@Component  
public class BankInfoAction extends ActionSupport implements ParameterAware,ModelDriven {  

    @Autowired  
    BankInfoService bankInfoService;  
    BankInfo bankInfo = new BankInfo();  
    List<BankInfo> banks = new ArrayList<BankInfo>();  
    Map<String, String[]> request;  

    public String create(){  
        bankInfoService.save(bankInfo);  
        list();  
        return "success";  
    }  


    public String update(){  
        bankInfoService.update(bankInfo);  
        list();  
        return "success";  
    }  


    public String delete(){  
        bankInfoService.delete(bankInfo);  
        list();  
        return "success";  
    }  


    public String list(){  
        banks = bankInfoService.list();  
        return "success";  

    }  


    public String load(){  
        bankInfo = bankInfoService.load(bankInfo.getId());  
        return "success";  
    }  


    public String cancel(){  
        return "success";  
    }  


    public BankInfoService getBankInfoService() {  
        return bankInfoService;  
    }  

    public void setBankInfoService(BankInfoService bankInfoService) {  
        this.bankInfoService = bankInfoService;  
    }  

    public BankInfo getBankInfo() {  
        return bankInfo;  
    }  

    public void setBankInfo(BankInfo bankInfo) {  
        this.bankInfo = bankInfo;  
    }  

    public List<BankInfo> getBanks() {  
        return banks;  
    }  

    public void setBanks(List<BankInfo> banks) {  
        this.banks = banks;  
    }  

    public Map<String, String[]> getRequest() {  
        return request;  
    }  

    public void setRequest(Map<String, String[]> request) {  
        this.request = request;  
    }  


    @Override  
    public void setParameters(Map<String, String[]> maps) {  
        request = maps;  
    }  

    @Override  
    public Object getModel() {  
        return bankInfo;  

    }  
}  

createBank.jsp

    <%@ taglib prefix="s" uri="/struts-tags" %>  
<%@ page contentType="text/html;charset=UTF-8" language="java" %>  
<html>  
<head>  
    <title>Create Bank </title>  
</head>  
<body>  

     <s:form action="createBank" method="Post" validate="true">  
            <table style="border: 1px solid #C1D0C8;" align="center" bgcolor="#f4f7f5" cellpadding="20" cellspacing="0" height="320"  
                   width="550">  
            <tr>  
            <td align="center" valign="top">  
            <table border="0" width="95%">  
                <div class="divForms">  
                <div class="item">  
                    <div class="label">  
                        <span><s:text name="Bank.Name"/></span>  
                        <span style="color:red;"> * </span>  
                    </div>  
                    <div class="control">  
                        <s:textfield name="bankName" cssClass="normal_input" theme="simple" />  
                    </div>  
                </div>  


                    <div class="But">  
                        <s:submit type="submit" cssClass="gradient-button"  name="newsletter_submit" id="newsletter_submit" key="Save" theme="simple"/>  
                        <s:submit type="submit" cssClass="Cancel" name="newsletter_submit" id="newsletter_submit" key="Cancel" theme="simple"/>  
                    </div>  

            </div>  

            </table>  
                </tr>  
            </table>  

            </s:form>  
</body>  
</html>  

这是我的lib:http://i.stack.imgur.com/V2KkW.jpg

另一件事是BankInfoAction-validation.xml和BankInfoAction.java在同一目录中

2 个答案:

答案 0 :(得分:0)

你应该使用

<field name="bankName">  
    <field-validator type="requiredstring">  
        <message key="errors.required"/>  
    </field-validator>  
</field>  

因为此字段已填充。 modelDriven拦截器将模型放在值堆栈的顶部。所以,你不应该担心设置值。

答案 1 :(得分:0)

3天后,我终于可以在老师的帮助下解决问题: 我看到了所有配置验证,但是: 第一个问题是:在提交&gt;&gt;之后,validatoin无法正常工作我的struts版本是struts2-core-2.3.14.3.jar我将它更改为struts2-core-2.3.15.x.jar并且它有效:)

第二个问题是:在提交验证消息后没有显示&gt;&gt;&gt; 1天后,我找到了解决方案&gt;&gt;&gt;&gt;&gt;问题是在我的textfields中theme =“simple”我把它改成了theme =“css_xhtml”