1

私は次のように2つのクラスがあります

Address
  int ID
  int unit
  String street 

User 
    int ID 
    String Name
    Address address

私のユーザークラス

public class user{
    .....
    private Address address;
     ...getters setters...
}

上記のように、UserクラスにはAddressクラスのオブジェクトが含まれています。私のコードは、フォームの値を受け取り、それらをコンソールに表示することが期待されています。

しかし、アドレスクラスのユニット属性にアクセスしようとすると、次のエラーが表示されます。

「重大:要求の処理中に例外が発生しました:nulljava.lang.NullPointerException」

私のコントローラー

@Action
class myclass implements ModelDriven{

   private User user = new User();

   public Register(){
       System.out.println("User's Unit" + user.getAddress().getUnit()); // error is on this line
   }
     @Override
    public Object getModel() {
       return user;
    }

jspファイル

<s:form action="Register">
             <s:textfield name="name" label="Name"/>
             <s:textfield name="unit" label="Unit"/>
             <s:textfield name="block" label="Block"/>
</s:form>
4

5 に答える 5

2

次の仲間をします

<s:textfield name="address.unit" label="Unit"/>
于 2013-02-13T04:35:59.373 に答える
2

このアクションクラスを試してくださいこれは間違いなく機能します

public class myclass extends ActionSupport implements ModelDriven<User>, Preparable{

    private User user = new User();

@Override
public void prepare() throws Exception {
    user=new User();
}

@Override
public User getModel() {
    return user;
}
public Register(){
   System.out.println("User's Unit" + user.getAddress().getUnit()); 
   }
}

jspを変更します

<s:textfield name="address.unit" label="Unit"/>

ユニットプロパティのみを設定する場合

于 2013-02-13T06:38:46.423 に答える
1
 <s:textfield name="name" label="Name"/>

ここで、struts2はそれぞれのアクションで関連するDTOのname = "name"プロパティを検索しますが、異なるBeanクラスAddressを作成したため、value-stackはアクションで"name"という名前 のプロパティを見つけることができませんでした。メンバー名"。したがって、form-elementに、「name」インスタンスが別のPOJO、つまりAdderessに存在することを伝える必要があります。したがって、次のように変更します。

<s:textfield name="address.name" label="name"/>
于 2013-02-13T05:17:16.407 に答える
0

私が見ているように問題は、あなたは反対していませnewaddress

address = new Address();Userクラスのコンストラクターで。

于 2013-02-13T04:32:36.630 に答える
0

「privateUseruser= new User()」を使用してユーザーオブジェクトを作成した場合、ユーザーのアドレスオブジェクトは初期化されていないようです。user.getAddress()がnullであるため、user.getAddress()。getUnit()を呼び出そうとすると、nullポインター例外が発生します。

于 2013-02-13T04:34:47.710 に答える