2010-12-14 66 views
0

我正在使用Struts 2单选按钮。 我想从我的动作类检索列表中,但它给下面的错误Struts 2单选按钮列表

org.apache.jasper.JasperException:标签 “无线电”,字段“列表”,名称 “user.yourGender”:请求列表 键'#user.gender'不能为 解析为 集合/数组/映射/枚举/迭代器 类型。例:人或人{名} - [未知地点]

我的动作类&用户类是遵循

HelloAction

package com.geekcap.struts2.action; 

import com.geekcap.struts2.model.User; 
import com.opensymphony.xwork2.ActionSupport; 
import java.util.List; 
import java.util.ArrayList; 

public class HelloAction extends ActionSupport 
{ 
private User user; 

public String execute() throws Exception 
{  
    return "success"; 
} 

public void validate() 
{ 
    if(user.getName().length()==0) 
    { 
    addFieldError("user.name", "User Name is required"); 
    } 

    if(user.getAge()==0) 
    { 
    addFieldError("user.age","Age is required"); 
    } 

    if(user.getPassword().length()==0) 
    { 
    addFieldError("user.password","Please enter your password !"); 
    } 

/* if(user.getGender().equals("-1")) 
    { 
    addFieldError("user.gender","Please select gender !"); 
    }*/ 
} 



public User getUser() 
{ 
    return user; 
} 

public void setUser(User userbean) 
{ 
    user=userbean; 
} 

} 

User类

package com.geekcap.struts2.model; 

import java.util.List; 
import java.util.ArrayList; 

public class User 
{ 
private String name,password; 
// private List like; 
private int age; 
private List<String> gender; 
private String yourGender; 

public User() 
{ 
    gender= new ArrayList<String>(); 
    gender.add("MALE"); 
    gender.add("FEMALE"); 
    gender.add("UNKNOWN"); 
} 


public String getName() 
{ 
    return name; 
} 

public void setName(String name) 
{ 
    this.name = name; 
} 

public String getPassword() 
{ 
    return password; 
} 

public void setPassword(String password) 
{ 
    this.password=password; 
} 

public int getAge() 
{ 
    return age; 
} 

public void setAge(int age) 
{ 
    this.age=age; 
} 

public List<String> getGender() 
{ 
    return gender; 
} 

public void setGender(List<String> gender) 
{ 
    this.gender=gender; 
} 

public void setYourGender(String yourGender) 
{ 
    this.yourGender=yourGender; 
} 

public String getYourGender() 
{ 
    return yourGender; 
} 

public String getDefaultGenderValue() 
{ 
    return "UNKNOWN"; 
} 

helloForm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Welcome to Struts 2</title> 
</head> 
<body> 

<s:form action="Hello"> 
    <s:textfield name="user.name" label="User name" value="shahid"/> 
    <s:password name="user.password" label="Password"/> 
    <s:textfield name="user.age" label="Age"/>  
    <s:radio label="Gender" name="user.yourGender" list="user.gender" value="defaultGenderValue"/>  
    <s:submit/> 
</s:form> 

</body> 
</html> 

的hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Hello, Struts 2</title> 
</head> 
<body> 
<h4> 
Hello, <s:property value="user.name"/>! 
<br>Your password :<s:property value="user.password"/></br> 
<br>your age :<s:property value="user.age"/></br> 
<br>Gender :<s:property value="user.yourGender"/></br> 
</h4> 
</body> 
</html> 
+0

这将是有益的,如果你可以格式化你的问题更好地[提示:使用“代码”格式化。你用于单选按钮的html代码是什么?作为anirvan的 – anirvan 2010-12-14 07:27:50

+0

表示使用代码格式化程序按钮(标记为1010的那个)来格式化代码。这次我为你做了。 – Nivas 2010-12-14 07:53:20

回答

0

你肯定列表gender不是在JSP null

如果为空,则支柱将不会看到它,因此认为它不存在

+0

不,它不是空的,事实上,我已经在用户行为构造函数生成收音机列表 – shahid 2010-12-16 04:53:35

+0

有没有人可以帮我 – shahid 2010-12-21 10:15:07

+0

@ user541595你说你已经生成了列表。但在行动类的例子中,你没有显示。确保你的列表在这个特定的JSP之前被实例化和填充。您可能想要在操作类的最后打印/调试它。 – Nivas 2010-12-22 08:37:53