2010-12-14 68 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