過去数時間、アプリケーションで検証を使用するたびにサーバー側で空の値が取得されるという問題に直面しています。
私のアクションファイルは次のようです:
@ParentPackage("interceptions")
@InterceptorRefs({
@InterceptorRef("loggingStack")
})
@Results({@Result(name="login",location="login.layout",type="tiles")})
public class LoginAction extends ActionSupport implements ModelDriven{
UpUser user = new UpUser();
String customField;
@Validations(requiredFields={@RequiredFieldValidator(type=ValidatorType.SIMPLE,fieldName="customField",message="YOU")})
@Action(value="/login",results={
@Result(name="success",location="secure.layout",type="tiles")})
public String execute() {
if(user.getUserScreenName()==null)
return "login";
System.out.println(userBo.verifyUser(user));
return "success";
}
public Object getModel(){
return user;
}
@VisitorFieldValidator(message="")
public UpUser getUser() {
return user;
}
public void setUser(UpUser user) {
this.user = user;
}
public String getCustomField() {
return customField;
}
public void setCustomField(String customField) {
this.customField = customField;
}
}
struts.xml で、インターセプターを次のように定義しました。
<package name="interceptions" extends="struts-default" namespace="/">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>
<interceptors>
<interceptor name="mylogging"
class="com.kiosk.lab.interceptor.LoggingInterceptor">
</interceptor>
<interceptor-stack name="loggingStack">
<interceptor-ref name="mylogging" />
<interceptor-ref name="validation">
<param name="validateAnnotatedMethodOnly">true</param>
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
</package>
私がデータを送信しているJSPは次のとおりです。
<s:submit cssClass="loginButton"/>
この問題についてはよくわかりませんが、アクションから ActionSupport を削除し、両方の方法で追加してテストしましたが、うまくいきませんでした。次に、struts.xml の傍受部分をコメントアウトし、アクションから検証タグを削除すると、すべてが正常に機能します。それ以外の場合、サーバー側の customField 値は null です。
アップデート:
Javaですべての値がnullになり、実際のエラーメッセージが表示されるため、いくつかの回答の後、値を正常に検証しています。しかし、それでも、JSP から値を送信していないという同様の問題に直面しています。常にnullになり、同じ検証エラーメッセージを投稿し続けます。