2010-12-14 6 views
0

Je travaille sur le bouton radio Struts 2. Je veux récupérer la liste de ma classe d'action, mais il donne l'erreur suivanteListe de boutons radio Struts 2

org.apache.jasper.JasperException: tag « radio », champ « liste », le nom « user.yourGender »: La clé de la liste demandée '# user.gender' n'a pas pu être résolue en tant que type collection/array/map/enumeration/itérateur . . Exemple: les gens ou les gens {name} - [lieu inconnu]

ma classe d'action & classe d'utilisateur est le suivant

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; 
} 

} 

classe 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

il sera utile si vous pouvez formater votre question mieux [astuce: utiliser le formatter « code »]. Quel est le code html que vous utilisez pour les boutons radio? – anirvan

+0

comme anirvan dit utiliser le bouton de formatage de code (celui marqué 1010) pour mettre en forme le code. Je l'ai fait pour vous cette fois. – Nivas

Répondre

0

Êtes-vous sûr que la liste gender n'est pas null dans la JSP?

Si elle est nulle, alors struts ne le voient et pensent donc qu'il est pas là

+0

non ce n'est pas nul, en fait j'ai généré la liste pour la radio dans l'action constructeur de l'utilisateur – shahid

+0

est là personne pour m'aider – shahid

+0

@ user541595 Vous dites que vous avez généré la liste. mais dans l'exemple de classe d'action, vous n'avez pas montré cela. Assurez-vous que votre liste est instanciée et remplie avant cette JSP particulière. Vous pourriez vouloir l'imprimer/déboguer à la fin de la classe d'action pour être sûr. – Nivas