Struts 2- problem with s:action tag

Posted by Raghave on Stack Overflow See other posts from Stack Overflow or by Raghave
Published on 2010-04-13T08:33:12Z Indexed on 2010/04/13 14:03 UTC
Read the original article Hit count: 457

Filed under:

Here is a small test application that does following things

  1. ask user to enter his name and submit - (index.jsp)
  2. as a result of index.jsp is the welcome.jsp page that asks user to select his/her blood group

index.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>   
<%@ taglib prefix="s" uri="/struts-tags" %>   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
<html>   
  <head>   </head>   
   <body>   
    <form action="MyName">   
    <s:textfield name="UserName" label="Enter Your Name"/>   
    <s:submit/>   
    </form><br>   
  </body>   
</html>    

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">   
<struts>   
<package name="module1" namespace="" extends="struts-default">   
<action name="MyName" class="module1.User">   
    <result>/Welcome.jsp</result>   
</action>   
<action name="Blood_Group" class="module1.SelectBloodGroup" method="bloodGroupList"/>   
</package>   

</struts>

SelectBloodGroup.java

package module1;   

import java.util.ArrayList;   
import com.opensymphony.xwork2.ActionSupport;   
public class SelectBloodGroup extends ActionSupport{   
    private ArrayList<BloodGroup> bglist;   

    public String bloodGroupList(){   
        bglist = new ArrayList<BloodGroup>();   
        bglist.add(new BloodGroup("1","A+"));   
        bglist.add(new BloodGroup("2","B+"));   
        bglist.add(new BloodGroup("3","AB+"));   
        bglist.add(new BloodGroup("4","O+"));   
        bglist.add(new BloodGroup("5","A-"));   
        bglist.add(new BloodGroup("6","B-"));   
        bglist.add(new BloodGroup("7","AB-"));   
        bglist.add(new BloodGroup("8","O-"));   
        return "SUCCESS";   
    }   

    public ArrayList<BloodGroup> getBglist(){   
        return bglist;   
    }   

}   
class BloodGroup{   
    private String id;   
    private String bg;   

    BloodGroup(String id,String bg){   
        this.id=id;   
        this.bg=bg;   
    }   

} 

welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>   
<%@ taglib prefix="s" uri="/struts-tags" %>   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
<html>   
  <head>   

  </head>   

  <body>   
    <s:action name="Blood_Group" executeResult="false"/>    

    //***************here is the problem***************   
    <s:select list="bglist" listKey="id" listValue="bg"/>   
   //***********************************************   

  </body>   
</html>   

Struts is unable to identify bglist as a collection or Array or List or iterator. WHAT SHOULD I ASSIGN TO list ATTRIBUTE IN THE s:select TAG IN THE FILE welcome.jsp

What is wrong with the code please tell me in detail. If you could send me the correted version. WHY IS THE s:action Tag not working ?

This is the error i am getting

Apr 13, 2010 1:49:19 PM org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp threw exception tag 'select', field 'list': The requested list key 'bglist' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]

© Stack Overflow or respective owner

Related posts about struts2