0

私の Struts2 アプリケーションでは、NullPointerException をスローするオブジェクトを使用して jsp 値にアクセスしています。

jspに次のコードがあります

<s:textfield name="controlObj.newname"  onclick="removeError();"/>

controlObj私はStruts2 ActionクラスでこれのためのBeanを持っています

private ControlForm controlObj;

public ControlForm getControlObj() {
    return controlObj;
}
public void setControlObj(ControlForm controlObj) {
    this.controlObj= controlObj;
}

しかし、アクションJavaファイルでこのnewnameプロパティにアクセスすると、NullpointerExceptionがスローされますが、ControlFormクラスではnewnameを初期化しました

public ControlForm () {
       newname ="Update name here...";
    }

私が使用しているsyantaxのコーディングに問題はありますか??? プロパティが Action クラスのように直接定義されている場合、値を取得できるため

private String variable_name;

タイプの変数に対してのみ nullPointerException を取得しますObject.property!!!

アップデート:

  1. Firebug ツールでcontrolObj.newnameは、フォーム送信で渡された値を確認できます。
  2. このアプリケーションを tomcat でスタンドアロンとして実行してもエラーは発生しません。"controlObj.newname" は値を返します。if は、Tomcat でこのアプリケーションと共に実行されている別の struts2 アプリケーションの場合にのみ null をスローします。
4

1 に答える 1

3

発生しているNullPointerExceptionは、newnameが初期化されていないためではなく、controlObjが初期化されていないためです。StrutsがgetControlObj()を使用してcontrolObjを取得すると、controlObjが初期化されていないため、nullが返され、このnullオブジェクトのgetNewname()がNullPointerExceptionをスローします。アクションでcontrolObjを適切に初期化した場合、これは解決されるはずです。

于 2012-06-25T12:09:30.460 に答える