0

JSPページを持っているページで選択されたラジオボタンの値を取得できません

<body>
    <s:form action="/YYY" id="frmPersonalPage" name="frmPersonalPage" >
      <s:radio name ="radio" list="skillMasterData"></s:radio>  
   </s:form>
 </body>

これは正しくレンダリングされます。私のstruts.xmlには

<action name="YYY" class="com.tdi.atom.actions.CCC" method="showEditSkillMasterPage">
        <result name ="success">/jsp/modules/skillmap/createskillmaster.jsp</result>
</action>

私のアクションクラスにはこれがあります

public class CCC extends BaseActionSupport {        
private ArrayList skillMasterData;  
public String   radio;
private ArrayList l1;
private ArrayList l2;
private ArrayList l3;

public ArrayList getSkillMasterData() {
    return skillMasterData;
}

public void setSkillMasterData(ArrayList skillMasterData) {
    this.skillMasterData = skillMasterData;
}

public String showEditSkillMasterPage()
{   log.info("at showEditSkillMasterPage");
    System.out.println("radio buttoneee : "+getRadio());//this is null
    setEditType("EDIT");
    return SUCCESS;
}

public String showListSkillMasterPage()
{
    SkillMasterDB pddb =new SkillMasterDB();
    JdbcHelper helper;
     l1 =new ArrayList();
       l2=new ArrayList();
       l3=new ArrayList();
       l1.add("asda");
       l1.add("rqwrq");
       l2.add("!@@##");
       l2.add("9087907");
       l3.add("./,/");
       l3.add("[][][]");
       skdto.add(l1);
       skdto.add(l2);
       skdto.add(l3);
       setSkillMasterData(skdto);
    return SUCCESS;
}
public String getRadio() {
    return radio;
}
public void setRadio(String radio) {
    this.radio = radio;
}

}

私が持っている BaseActionSupport クラスで

 public class BaseActionSupport extends ActionSupport implements SessionAware {
 private Map userSession;
 public UserDTO user; 
 public UserDTO getUser() {
 return mgr.getUser(); 
}
 public boolean isAdmin() {
 return mgr.isUserADMIN(); 
}
 public void setSession(Map session) { 
 userSession = session; mgr = new SecurityManager(userSession);
 }
 }

このような単純なコードが機能しない理由がわかりません。それ以外の場合は、非常によく似たコードが正常に機能します。

4

1 に答える 1

0

あなたのコードにはいくつかの奇妙なことがあります。

とは、ここに投稿するためだけに作成された難読化された名前であると仮定CCCします (そうでない場合は、クラス名の最初の文字を大文字にして使用する必要があります)。YYYCamelCaseMyAction

  • アクセサー メソッド (getter および setter) は常にプライベート変数の名前を尊重する必要があるため、 を尊重する必要がありJavaBeans conventionsます。userSessionsession
  • skdto変数はshowListSkillMasterPageメソッドで初期化も定義もされていません。
  • ArrayList<ArrayList<String>>ラジオボタンの使用が良いかどうかはわかりません。ArrayList<String>次のような単純なもので試すことができます。

    public String showListSkillMasterPage() {
        SkillMasterDB pddb =new SkillMasterDB();
        JdbcHelper helper;    
        List<String> skdto = new ArrayList<String>();
        skdto.add("asda");
        skdto.add("rqwrq");
        skdto.add("!@@##");
        skdto.add("9087907");
        skdto.add("./,/");
        skdto.add("[][][]");
        setSkillMasterData(skdto);
        return SUCCESS;
    }
    
  • 最後に、ページから何が出力されるかをテストしFirebug's Net module、ラジオ パラメータの値を現在と編集後にチェックして、現在何が問題になっていて、(うまくいけば) 後でどのようになるかを確認できます...

于 2013-01-21T12:59:16.580 に答える