0

私はHTMLフォームを持っていますが、Strutsを使用して、ユーザーがサイトに登録する前に有効な電子メールアドレスを入力したことを検証しようとしています。

フォームが送信されると、検証は行われていないように見え、フォームはそのままアクションパラメータクラスに送信されます。

私はStrutsを初めて使用するので、明らかなことを見逃したと仮定してください(おそらく持っているため)。

私のフォームは次のようになります(UserRegistrationAddForm.jsp):

<form name="registrationAddForm" method="post" action="UserRegistrationAdd">
    <div class="form-label-holder">
        <label for="email"><fmt:message key="LOGON_ID" bundle="${storeText}" /><span class="mandatoryindicator"> *</span></label>
    </div>
    <div class="form-field-holder">
        <input id="email" class="required email" type="text" name="logonId" value="<c:out value="${paramSource.logonId}" />" />
    </div>
    <input type="image" src="<c:out value="${jspStoreImgDir}" />mobile/images/next-button.png" />
</form>

私の構成は(struts-config.xml)です:

<struts-config>
    <form-beans>
        <form-bean name="UserRegAddForm"
            type="org.apache.struts.validator.DynaValidatorForm">
            <form-property name="logonId" type="java.lang.String" />
        </form-bean>
    </form-beans>
    <action
        parameter="com.example.UserRegistrationAddCmd"
        path="/UserRegistrationAdd" type="com.example.LTPATokenGenerationEnabledBaseAction"
        name="UserRegAddForm">
        <set-property property="https" value="0:1"/>
        <set-property property="authenticate" value="0:0"/>
    </action>
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml"/>
    </plug-in>
</struts-config>

検証が(validator-rules.xml)として構成されている場合:

<form-validation>
    <form name="UserRegAddForm">
        <field property="logonId" depends="required,email">
            <arg key="registrationAddForm.logonId" />
        </field>
    </form>
</form-validation>

スタックは次のことを示しています。

at com.example.BaseAction.executeAction(BaseAction.java:722)
    at com.example.struts.BaseAction.execute(BaseAction.java:150)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at com.example.struts.ECActionServlet.processRequest(ECActionServlet.java:218)
    at com.example.struts.ECActionServlet.doPost(ECActionServlet.java:174)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)

スタックトレースは、処理の次のステップでのエラーによるものであるため、それほど遠くまで到達することはありません。

興味深いことに、スタックにはアクションタイプへの参照が記載されていないcom.example.LTPATokenGenerationEnabledBaseActionため、何かを誤って構成したと思いますか?

4

1 に答える 1

0

よくわかりませんが、form-b​​eanタグでorg.apache.struts.validator.DynaValidatorActionFormを使用する必要があるかもしれません。

于 2013-01-23T16:08:09.370 に答える