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

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

假设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页面的内容,现在和编辑后检查无线电参数值,看看现在出了什么问题以及稍后会如何(希望如此)......

于 2013-01-21T12:59:16.580 回答