无法在struts2中设置单选按钮

时间:2013-01-21 08:01:26

标签: user-interface struts2

我无法获取页面中选择的单选按钮的值 我有一个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);
 }
 }

我只是无法弄清楚为什么这么简单的代码无效。否则,非常相似的代码可以正常工作。

1 个答案:

答案 0 :(得分:0)

你的代码中有一些奇怪的东西。

假设CCCYYY是仅为在此处发布而创建的模糊名称(否则,您应该使用CamelCase首字母大写为类名,例如MyAction) ,

  • 您应该尊重JavaBeans conventions,然后userSession应该成为session,因为访问者方法(getter和setter)应该始终尊重私有变量的名称);
  • 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测试页面的内容,现在检查无线电参数值,然后检查编辑后查看现在出现的问题及其进展情况(希望如此) )以后......