Struts2 2.3.28 J2EE Webアプリケーションに問題があり、Apache Tomcat 8にデプロイされています。フォームが存在し、Struts2がJSPからアクションクラスへのテキストフィールドを正しくマッピングしていない
classificazioni.jsp:いくつかの名前のテキストフィールド
EditCategorie:
<s:form action="editCategorie" >
<s:textfield label="Nome" name="namedCat" value="ciao"/>
<!--
<s:textfield label="Nome" name="catBean.namedCat" value="ciao"/>
-->
...
私は、プロパティの宣言とゲッターとセッターを提供するそれぞれのActionClass、にこのテキストフィールドの値にアクセスしたいです。 java:
private String namedCat;
public String getNamedCat() {
return namedCat;
}
public void setNamedCat(String namedCat) {
this.namedCat = namedCat;
}
/*
private CatBean catBean;
public CatBean getCatBean() {
return catBean;
}
public void setCatBean(CatBean catBean) {
this.catBean = catBean;
}
*/
public String execute()
{
return SUCCESS;
}
public String display()
{
System.out.println(getNamedCat());
// System.out.println(getCatBean().getNamedCat());
return NONE;
}
私は、表示メソッドが呼び出されたときにwebappが正しく動作し、namedCatのテキストフィールド値を出力することがわかっています。ここに私のstruts.xml興味深い部分です:
<interceptors>
<interceptor-stack name="mystack">
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<action name="editCategorie" class="it.unisalento.se.actions.EditCategorie">
<interceptor-ref name="mystack"/>
<result name="success" type="tiles">classificazioni</result>
</action>
<action name="showCategorie" class="it.unisalento.se.actions.EditCategorie" method="display">
<interceptor-ref name="mystack"/>
<result name="none" type="tiles">classificazioni</result>
</action>
「あなたは、コードを読んで気づいたとして、私はちょうど、2つの異なるアプローチを試してみたが、私は、コンソールショーEditCategorieの表示方法にnamedCatを印刷しようとすると、 Beanのアプローチでは、私はStruts2が自動的にBeanクラスを適切な属性で自動的にインスタンス化するはずですが、これは起こりません。明らかに、catBeanインスタンスのnamedCatプロパティにアクセスしようとすると、 NullPointerException。
結局これもCatBean.javaクラスです:
public CatBean()
{
}
private String namedCat;
public String getNamedCat() {
return namedCat;
}
public void setNamedCat(String namedCat) {
this.namedCat = namedCat;
}
は私がメインStruts2の利点は、直接サーブレットのロジックの使用を避けることであることを、ここで何度も読んだことがある、とも私は、このことを、ここで読んだことがあります2つのアプローチが有効です。 ModelDrivenのアプローチを使うこともできますが(これは他のアクションでもうまくいきます)、パラメトリックなテキストフィールドを扱わなければならないので、そうではありません。