2017-06-09 21 views
1

次のJavaオブジェクトがあります。Struts2引数のないコンストラクタの文字列値が空の文字列に変更されました

public class TestClass { 
private String testString; 
private int testInt; 

public TestClass(){ 
    this.testInt = 1; 
    this.testString = "test"; 
} 
... getters and setters 

私は私のjspページで、次のStruts2textfieldsが含まれています。

 <s:textfield name="test.testString" /> 
     <s:textfield name="test.testInt" /> 

私は私のコードでtestオブジェクトを初期化していないですし、no-argコンストラクタを使用してStruts2に頼っています。フィールドに「test」と入力してフィールドに1フィールドを入力した後に、のフィールドに空白のが入力されている場合、フィールドにはが表示されます。なぜこれが起こるのですか?

+0

privateの代わりに変数をpublicにすると "test"というテキストが表示されます。変数がそのクラスにプライベートであるときにドット演算子で値にアクセスすることはできませんが、もう一度Strutsについてよく知りません。また、ドット演算子の代わりにゲッターを使うこともできます。 intが動作する理由と文字列は私には何の手がかりもありません。 –

+0

私はStrutsが期待している2つのフィールドのパブリックゲッターとセッターを持っています。それをもう少し見た後、Strutsは入力値を空の文字列として扱い、値を上書きすると思います。なぜ私はintフィールドで同じことをしないのか分からない。 – ponder275

+0

興味深いことに、それらのゲッターが期待していますが、ドット演算子の使用を参照してください。それは私には変です。 を試すことができますか?またはそれは動作しません –

答えて

0

フォームが送信されたときに起こっていることは、が空の文字列に空の文字列に変換し、それをJavaフィールドに入れていると思います。明らかにStruts2は空のintフィールドを0に変換しません。

関連する問題