You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by slayer666 <rf...@hotmail.es> on 2010/06/22 12:51:16 UTC

JSF selectMany Tag problem

Good morning, i am trying the JSF selectManyMenu tag and i when i execute the
aplication renders this trace log: 

javax.servlet.ServletException 
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277) 


causa raíz 

java.lang.NullPointerException 
       
org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:171) 
       
com.sun.faces.application.ViewHandlerImpl$WriteBehindStateWriter.write(ViewHandlerImpl.java:867) 
       
com.sun.faces.renderkit.html_basic.HtmlResponseWriter.write(HtmlResponseWriter.java:620) 
       
com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:539) 
       
com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772) 
       
com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832) 
       
com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280) 
       
javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861) 
        javax.faces.component.UIComponent.encodeAll(UIComponent.java:937) 
        javax.faces.render.Renderer.encodeChildren(Renderer.java:148) 
       
javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) 
        javax.faces.component.UIComponent.encodeAll(UIComponent.java:930) 
        javax.faces.component.UIComponent.encodeAll(UIComponent.java:933) 
       
com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266) 
       
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197) 
       
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) 
        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 
        com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) 

This are the codes implemented: 

*faces-config.xml

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd" 
    version="1.2"> 
    
    <application> 
      <resource-bundle> 
        <base-name>jsf.properties.Application</base-name> 
        <var>label</var> 
      </resource-bundle> 
    </application> 
    <managed-bean> 
      <managed-bean-name>groups</managed-bean-name> 
      <managed-bean-class>java.util.ArrayList</managed-bean-class> 
      <managed-bean-scope>session</managed-bean-scope> 
      <list-entries> 
        <value-class>jsf.beans.Select</value-class> 
        <value>#{groupA}</value>         
      </list-entries> 
    </managed-bean> 
    <managed-bean> 
      <managed-bean-name>groupA</managed-bean-name> 
      <managed-bean-class>jsf.beans.Select</managed-bean-class> 
      <managed-bean-scope>session</managed-bean-scope> 
      <managed-property> 
         <property-name>team1</property-name>         
         <value>Brazil</value>         
      </managed-property> 
      <managed-property> 
         <property-name>team2</property-name> 
         <value>Korea</value>         
      </managed-property> 
      <managed-property> 
         <property-name>team3</property-name> 
         <value>Portugal</value>         
      </managed-property> 
    </managed-bean>                     
    <managed-bean> 
      <managed-bean-name>login</managed-bean-name> 
      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class> 
      <managed-bean-scope>request</managed-bean-scope> 
      <managed-property> 
        <property-name>minimum</property-name>         
        <value>18</value> 
      </managed-property>       
    </managed-bean> 
    <navigation-rule> 
      <from-view-id>/index.jsp</from-view-id> 
      <navigation-case> 
        <from-outcome>loginSuccess</from-outcome> 
        <to-view-id>/success.jsp</to-view-id> 
      </navigation-case>       
    </navigation-rule> 
    <navigation-rule> 
      <from-view-id>/success.jsp</from-view-id> 
      <navigation-case> 
        <from-outcome>home</from-outcome> 
        <to-view-id>/index.jsp</to-view-id> 
      </navigation-case> 
      <navigation-case> 
        <from-outcome>populate</from-outcome> 
        <to-view-id>/bookStore.jsp</to-view-id> 
      </navigation-case>                       
    </navigation-rule>         
</faces-config> 

*login.jsp

          <h:selectManyMenu value="#{login.groupsWorldCup}"> 
            <f:selectItems value="#{groups}"/> 
          </h:selectManyMenu> 

*LoginBean.java

package jsf.beans; 

import java.util.ArrayList; 

import javax.faces.application.FacesMessage; 
import javax.faces.component.UIComponent; 
import javax.faces.component.UIInput; 
import javax.faces.context.FacesContext; 

public class LoginBean { 
        private String userName; 
        private String passwd; 
        private Integer age=null; 
        private String text; 
        private int minimum; 
        private boolean check; 
        private String language; 
        private ArrayList<BookBean> bookList=new ArrayList<BookBean>(); 
        private String style; 
        private ArrayList<String> role=new ArrayList<String>(); 
        private ArrayList<String> menuList=new ArrayList<String>(); 
        private ArrayList<String> groupsWorldCup=new ArrayList<String>(); 
        
        public String getUserName() { 
                return userName; 
        } 

        public void setUserName(String userName) { 
                this.userName = userName; 
        } 
                        
        public String getPasswd() { 
                return passwd; 
        } 

        public void setPasswd(String passwd) { 
                this.passwd = passwd; 
        } 
                        
        public Integer getAge() { 
                return age; 
        } 

        public void setAge(Integer age) { 
                this.age = age; 
        } 
                
        public int getMinimum() { 
                return minimum; 
        } 

        public void setMinimum(int minimum) { 
                this.minimum = minimum; 
        } 
                
        public String getText() { 
                return text; 
        } 

        public void setText(String text) { 
                this.text = text; 
        } 

        public ArrayList<BookBean> getBookList() { 
                return bookList; 
        } 

        public void setBookList(ArrayList<BookBean> bookList) { 
                this.bookList = bookList; 
        } 

        public boolean isCheck() { 
                return check; 
        } 

        public void setCheck(boolean check) { 
                this.check = check; 
        } 
                        
        public String getLanguage() { 
                return language; 
        } 

        public void setLanguage(String language) { 
                this.language = language; 
        } 
                
        public String getStyle() { 
                return style; 
        } 

        public void setStyle(String style) { 
                this.style = style; 
        } 
                        
        public ArrayList<String> getRole() { 
                return role; 
        } 

        public void setRole(ArrayList<String> role) { 
                this.role = role; 
        } 

        public ArrayList<String> getMenuList() { 
                return menuList; 
        } 

        public void setMenuList(ArrayList<String> menuList) { 
                this.menuList = menuList; 
        } 
                                
        public ArrayList<String> getGroupsWorldCup() { 
                return groupsWorldCup; 
        } 

        public void setGroupsWorldCup(ArrayList<String> groupsWorldCup) { 
                this.groupsWorldCup = groupsWorldCup; 
        } 

        public void checkUsername(FacesContext fcontext,UIComponent
component,Object value){ 
                String msg=(String)value; 
                if(!msg.equals("raul")){ 
                        ((UIInput)component).setValid(false); 
                        fcontext.addMessage(component.getClientId(fcontext),
new FacesMessage("Usuario incorrecto")); 
                } 
        } 
        
        public void checkPasswd(FacesContext fcontext,UIComponent
component,Object value){ 
                if(!value.equals("vaji97")){ 
                        ((UIInput)component).setValid(false); 
                        fcontext.addMessage(component.getClientId(fcontext),
new FacesMessage("Clave incorrecta")); 
                } 
        } 
        
        public String populateBookList(){ 
                this.bookList.add(new BookBean(2,"Lord of the Rings",34)); 
                this.bookList.add(new BookBean(3,"Codigo DVinci",38)); 
                this.bookList.add(new BookBean(1,"Angels and Evils",36)); 
                this.bookList.add(new BookBean(4,"Geisha history",27)); 
                return "populate"; 
        } 
} 


Any suggestions?. 

Thanks in advanced.
-- 
View this message in context: http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28958641.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.


Re: JSF selectMany Tag problem

Posted by Mike Kienenberger <mk...@gmail.com>.
The problem is that <h:selectManyMenu value="#{login.teams}"> is
really #{login.selectedTeam} -- it's a single select item value, not
the whole list of select items.

The solution is to replace

> public ArrayList<String> getTeams() {
>                return teams;
>        }
>
>        public void setTeams(ArrayList<String> teams) {
>                this.teams = teams;
>        }

with

public String getSelectedTeam()
and
public void setSelectedTeam(String newTeam)

and use

<h:selectManyMenu value="#{login.selectedTeam}">

Also, your groupA bean is a single SelectItem, not a list.   So only
the last label and value property is going to remain.

On Fri, Jun 25, 2010 at 8:43 AM, slayer666 <rf...@hotmail.es> wrote:
>
> Hi Mike,
> that was the reason that caused the problem. Now the applicattion renders
> another error when i executed.
>
> javax.servlet.ServletException: Argument Error: An option for component
> j_id_jsp_1961308526_35 was not an instance of javax.faces.model.SelectItem.
> Type found: java.util.ArrayList.
>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
>
>
> causa raíz
>
> java.lang.IllegalArgumentException: Argument Error: An option for component
> j_id_jsp_1961308526_35 was not an instance of javax.faces.model.SelectItem.
> Type found: java.util.ArrayList.
>
> com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:306)
>
> com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:814)
>
> com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
>        javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
>        javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
>
> javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
>
> com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
>
> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
>
> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
>        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>        com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
>
> This is my resource file
>
> faces-config.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <faces-config
>    xmlns="http://java.sun.com/xml/ns/javaee"
>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
>    version="1.2">
>
>    <application>
>      <resource-bundle>
>        <base-name>jsf.properties.Application</base-name>
>        <var>label</var>
>      </resource-bundle>
>    </application>
>    <managed-bean>
>      <managed-bean-name>groups</managed-bean-name>
>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>      <managed-bean-scope>session</managed-bean-scope>
>      <list-entries>
>         <value>#{groupA}</value>
>      </list-entries>
>    </managed-bean>
>    <managed-bean>
>      <managed-bean-name>groupA</managed-bean-name>
>      <managed-bean-class>javax.faces.model.SelectItem</managed-bean-class>
>      <managed-bean-scope>none</managed-bean-scope>
>      <managed-property>
>        <property-name>label</property-name>
>        <value>1-Brazil</value>
>      </managed-property>
>      <managed-property>
>        <property-name>value</property-name>
>        <value>Brazil</value>
>      </managed-property>
>      <managed-property>
>        <property-name>label</property-name>
>        <value>2-Spain</value>
>      </managed-property>
>      <managed-property>
>        <property-name>value</property-name>
>        <value>Spain</value>
>      </managed-property>
>      <managed-property>
>        <property-name>label</property-name>
>        <value>3-Korea</value>
>      </managed-property>
>      <managed-property>
>        <property-name>value</property-name>
>        <value>Korea</value>
>      </managed-property>
>    </managed-bean>
>    <managed-bean>
>      <managed-bean-name>login</managed-bean-name>
>      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class>
>      <managed-bean-scope>request</managed-bean-scope>
>      <managed-property>
>        <property-name>minimum</property-name>
>        <value>18</value>
>      </managed-property>
>    </managed-bean>
>    <navigation-rule>
>      <from-view-id>/index.jsp</from-view-id>
>      <navigation-case>
>        <from-outcome>loginSuccess</from-outcome>
>        <to-view-id>/success.jsp</to-view-id>
>      </navigation-case>
>    </navigation-rule>
>    <navigation-rule>
>      <from-view-id>/success.jsp</from-view-id>
>      <navigation-case>
>        <from-outcome>home</from-outcome>
>        <to-view-id>/index.jsp</to-view-id>
>      </navigation-case>
>      <navigation-case>
>        <from-outcome>populate</from-outcome>
>        <to-view-id>/bookStore.jsp</to-view-id>
>      </navigation-case>
>    </navigation-rule>
> </faces-config>
>
> This is the snippet JSP code:
>
> <h:selectManyMenu value="#{login.teams}">
>            <f:selectItems value="#{groups}"/>
>          </h:selectManyMenu>
>
> And finally this is my bean class:
>
> package jsf.beans;
>
> import java.util.ArrayList;
> import java.util.Date;
> import java.util.Locale;
>
> import javax.faces.application.FacesMessage;
> import javax.faces.component.UIComponent;
> import javax.faces.component.UIInput;
> import javax.faces.context.FacesContext;
> import javax.faces.convert.DateTimeConverter;
> import javax.faces.event.ActionEvent;
> import javax.faces.event.ValueChangeEvent;
> import javax.faces.event.ValueChangeListener;
> import javax.faces.model.SelectItem;
>
> public class LoginBean {
>        private String userName;
>        private String passwd;
>        private Integer age=null;
>        private String text;
>        private int minimum;
>        private boolean check;
>        private String language;
>        private ArrayList<BookBean> bookList=new ArrayList<BookBean>();
>        private String style;
>        private ArrayList<String> role;
>        private ArrayList<String> menuList;
>        private ArrayList<Select> groupsWorldCup=new ArrayList<Select>();
>        private ArrayList<String> teams=new ArrayList<String>();
>        private Date dateLogin=new Date();
>        private Locale brazilLocal=new Locale("pt","BR");
>        private BuyActionListener buttonListener=new BuyActionListener();
>
>        public BuyActionListener getButtonListener() {
>                return buttonListener;
>        }
>
>        public void setButtonListener(BuyActionListener buttonListener) {
>                this.buttonListener = buttonListener;
>        }
>
>        public Locale getBrazilLocal() {
>                return brazilLocal;
>        }
>
>        public void setBrazilLocal(Locale brazilLocal) {
>                this.brazilLocal = brazilLocal;
>        }
>
>        public ArrayList<String> getTeams() {
>                return teams;
>        }
>
>        public void setTeams(ArrayList<String> teams) {
>                this.teams = teams;
>        }
>
>        public LoginBean(){
>                this.groupsWorldCup.add(new Select("Brazil","1-Brazil"));
>                this.groupsWorldCup.add(new Select("Korea","2-Korea"));
>                this.groupsWorldCup.add(new Select("Portugal","3-Portugal"));
>        }
>
>        public String getUserName() {
>                return userName;
>        }
>
>        public void setUserName(String userName) {
>                this.userName = userName;
>        }
>
>        public String getPasswd() {
>                return passwd;
>        }
>
>        public void setPasswd(String passwd) {
>                this.passwd = passwd;
>        }
>
>        public Integer getAge() {
>                return age;
>        }
>
>        public void setAge(Integer age) {
>                this.age = age;
>        }
>
>        public int getMinimum() {
>                return minimum;
>        }
>
>        public void setMinimum(int minimum) {
>                this.minimum = minimum;
>        }
>
>        public String getText() {
>                return text;
>        }
>
>        public void setText(String text) {
>                this.text = text;
>        }
>
>        public ArrayList<BookBean> getBookList() {
>                return bookList;
>        }
>
>        public void setBookList(ArrayList<BookBean> bookList) {
>                this.bookList = bookList;
>        }
>
>        public boolean isCheck() {
>                return check;
>        }
>
>        public void setCheck(boolean check) {
>                this.check = check;
>        }
>
>        public String getLanguage() {
>                return language;
>        }
>
>        public void setLanguage(String language) {
>                this.language = language;
>        }
>
>        public String getStyle() {
>                return style;
>        }
>
>        public void setStyle(String style) {
>                this.style = style;
>        }
>
>        public ArrayList<String> getRole() {
>                return role;
>        }
>
>        public void setRole(ArrayList<String> role) {
>                this.role = role;
>        }
>
>        public ArrayList<String> getMenuList() {
>                return menuList;
>        }
>
>        public void setMenuList(ArrayList<String> menuList) {
>                this.menuList = menuList;
>        }
>
>        public ArrayList<Select> getGroupsWorldCup() {
>                return groupsWorldCup;
>        }
>
>        public void setGroupsWorldCup(ArrayList<Select> groupsWorldCup) {
>                this.groupsWorldCup = groupsWorldCup;
>        }
>
>        public Date getDateLogin() {
>                return dateLogin;
>        }
>
>        public void setDateLogin(Date dateLogin) {
>                this.dateLogin = dateLogin;
>        }
>
>        public void checkUsername(FacesContext fcontext,UIComponent
> component,Object value){
>                String msg=(String)value;
>                if(!msg.equals("raul")){
>                        ((UIInput)component).setValid(false);
>                        fcontext.addMessage(component.getClientId(fcontext), new
> FacesMessage("Usuario incorrecto"));
>                }
>        }
>
>        public void checkPasswd(FacesContext fcontext,UIComponent component,Object
> value){
>                if(!value.equals("vaji97")){
>                        ((UIInput)component).setValid(false);
>                        fcontext.addMessage(component.getClientId(fcontext), new
> FacesMessage("Clave incorrecta"));
>                }
>        }
>
>        public String populateBookList(){
>                this.bookList.add(new BookBean(2,"Lord of the Rings",34));
>                this.bookList.add(new BookBean(3,"Codigo DVinci",38));
>                this.bookList.add(new BookBean(1,"Angels and Evils",36));
>                this.bookList.add(new BookBean(4,"Geisha history",27));
>                return "populate";
>        }
>
>        public void changeValue(ValueChangeEvent evt){
>                System.out.println("Valor nuevo:" +evt.getNewValue());
>                System.out.println("Valor viejo:" +evt.getOldValue());
>        }
>
>        public void buyAction(ActionEvent evt){
>                System.out.println("Comprado el libro");
>        }
> }
>
> Its a bit strange this error because according with my resource file the
> application should instanciate an SelectItem array List in the value
> attribute selectItems tag.
>
> Thanks.
>
> Regards:Raul.
>
>
>
> Mike Kienenberger wrote:
>>
>> I think the problem is that your Select class is not populating the
>> label and value instance variables, leading to a NullPointerException.
>>
>> I don't remember if there's a way to specify values for the
>> constructor from managed beans -- I don't do a lot with managed beans
>> in my JSF projects.
>>
>> The spec says that the bean has to have a zero-args public
>> constructor.   Your Select item does not.
>>
>> It does look like Jsf 1.2 allows you to set the label and the value
>> separately after the zero-arg constructor is called.
>>
>> It does seem a bit odd that you're defining team1/team2 values on the
>> Select class but aren't doing anything with them.
>>
>> Maybe you want to do it like this:
>>
>>    <managed-bean>
>>      <managed-bean-name>groups</managed-bean-name>
>>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>>      <managed-bean-scope>session</managed-bean-scope>
>>      <list-entries>
>>        <value-class>jsf.beans.Select</value-class>
>>        <value>#{groupA}</value>
>>        <value>#{groupB}</value>
>>      </list-entries>
>>    </managed-bean>
>>
>> [...]
>>
>>      <managed-bean-name>groupA</managed-bean-name>
>>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>>      <managed-bean-scope>session</managed-bean-scope>
>>      <managed-property>
>>         <property-name>label</property-name>
>>         <value>Brazil</value>
>>      </managed-property>
>>      <managed-property>
>>         <property-name>value</property-name>
>>         <value>Brazil</value>
>>      </managed-property>
>>    </managed-bean>
>>
>>      <managed-bean-name>groupB</managed-bean-name>
>>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>>      <managed-bean-scope>session</managed-bean-scope>
>>      <managed-property>
>>         <property-name>label</property-name>
>>         <value>Korea</value>
>>      </managed-property>
>>      <managed-property>
>>         <property-name>value</property-name>
>>         <value>Korea</value>
>>      </managed-property>
>>    </managed-bean>
>>
>> I suspect what you're trying to do is create one SelectItem for each
>> team, but it's really hard to know for certain.
>>
>> I normally populate selectItems lists using a method on a bean...
>>
>> <f:selectItems value="#{login.groups}"/>
>>
>> and
>>
>> public SelectItem[] getGroups() {
>>
>> }
>>
>>
>> On Thu, Jun 24, 2010 at 5:15 AM, slayer666 <rf...@hotmail.es> wrote:
>>>
>>> Hi, sorry but I forgott to post the Select bean class.
>>>
>>> package jsf.beans;
>>>
>>> import javax.faces.model.SelectItem;
>>>
>>> public class Select extends SelectItem {
>>>        private String team1;
>>>        private String team2;
>>>        private String team3;
>>>
>>>        public Select(String v,String l){
>>>                super(v,l);
>>>        }
>>>
>>>        public String getTeam1() {
>>>                return team1;
>>>        }
>>>        public void setTeam1(String team1) {
>>>                this.team1 = team1;
>>>        }
>>>        public String getTeam2() {
>>>                return team2;
>>>        }
>>>        public void setTeam2(String team2) {
>>>                this.team2 = team2;
>>>        }
>>>        public String getTeam3() {
>>>                return team3;
>>>        }
>>>        public void setTeam3(String team3) {
>>>                this.team3 = team3;
>>>        }
>>>
>>>
>>>
>>> }
>>>
>>> As you can see this class extends from SelectItem class so theoretically
>>> i
>>> have implemented a List of SelectedItems.
>>>
>>> Thanks.
>>>
>>>
>>> Mike Kienenberger wrote:
>>>>
>>>> That's a new way (to me) to initialize a selectItems list.
>>>>
>>>> Are you certain that your "groups" beans are SelectItem instances?
>>>>
>>>> On Tue, Jun 22, 2010 at 6:51 AM, slayer666 <rf...@hotmail.es> wrote:
>>>>>
>>>>> Good morning, i am trying the JSF selectManyMenu tag and i when i
>>>>> execute
>>>>> the
>>>>> aplication renders this trace log:
>>>>>
>>>>> javax.servlet.ServletException
>>>>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
>>>>>
>>>>>
>>>>> causa raíz
>>>>>
>>>>> java.lang.NullPointerException
>>>>>
>>>>> org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:171)
>>>>>
>>>>> com.sun.faces.application.ViewHandlerImpl$WriteBehindStateWriter.write(ViewHandlerImpl.java:867)
>>>>>
>>>>> com.sun.faces.renderkit.html_basic.HtmlResponseWriter.write(HtmlResponseWriter.java:620)
>>>>>
>>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:539)
>>>>>
>>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772)
>>>>>
>>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832)
>>>>>
>>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
>>>>>
>>>>> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
>>>>>
>>>>>  javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
>>>>>        javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
>>>>>
>>>>> javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
>>>>>
>>>>>  javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
>>>>>
>>>>>  javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
>>>>>
>>>>> com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
>>>>>
>>>>> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
>>>>>
>>>>> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
>>>>>        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>>>>>
>>>>>  com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
>>>>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
>>>>>
>>>>> This are the codes implemented:
>>>>>
>>>>> *faces-config.xml
>>>>>
>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>
>>>>> <faces-config
>>>>>    xmlns="http://java.sun.com/xml/ns/javaee"
>>>>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>>> http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
>>>>>    version="1.2">
>>>>>
>>>>>    <application>
>>>>>      <resource-bundle>
>>>>>        <base-name>jsf.properties.Application</base-name>
>>>>>        <var>label</var>
>>>>>      </resource-bundle>
>>>>>    </application>
>>>>>    <managed-bean>
>>>>>      <managed-bean-name>groups</managed-bean-name>
>>>>>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>>>>>      <managed-bean-scope>session</managed-bean-scope>
>>>>>      <list-entries>
>>>>>        <value-class>jsf.beans.Select</value-class>
>>>>>        <value>#{groupA}</value>
>>>>>      </list-entries>
>>>>>    </managed-bean>
>>>>>    <managed-bean>
>>>>>      <managed-bean-name>groupA</managed-bean-name>
>>>>>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>>>>>      <managed-bean-scope>session</managed-bean-scope>
>>>>>      <managed-property>
>>>>>         <property-name>team1</property-name>
>>>>>         <value>Brazil</value>
>>>>>      </managed-property>
>>>>>      <managed-property>
>>>>>         <property-name>team2</property-name>
>>>>>         <value>Korea</value>
>>>>>      </managed-property>
>>>>>      <managed-property>
>>>>>         <property-name>team3</property-name>
>>>>>         <value>Portugal</value>
>>>>>      </managed-property>
>>>>>    </managed-bean>
>>>>>    <managed-bean>
>>>>>      <managed-bean-name>login</managed-bean-name>
>>>>>      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class>
>>>>>      <managed-bean-scope>request</managed-bean-scope>
>>>>>      <managed-property>
>>>>>        <property-name>minimum</property-name>
>>>>>        <value>18</value>
>>>>>      </managed-property>
>>>>>    </managed-bean>
>>>>>    <navigation-rule>
>>>>>      <from-view-id>/index.jsp</from-view-id>
>>>>>      <navigation-case>
>>>>>        <from-outcome>loginSuccess</from-outcome>
>>>>>        <to-view-id>/success.jsp</to-view-id>
>>>>>      </navigation-case>
>>>>>    </navigation-rule>
>>>>>    <navigation-rule>
>>>>>      <from-view-id>/success.jsp</from-view-id>
>>>>>      <navigation-case>
>>>>>        <from-outcome>home</from-outcome>
>>>>>        <to-view-id>/index.jsp</to-view-id>
>>>>>      </navigation-case>
>>>>>      <navigation-case>
>>>>>        <from-outcome>populate</from-outcome>
>>>>>        <to-view-id>/bookStore.jsp</to-view-id>
>>>>>      </navigation-case>
>>>>>    </navigation-rule>
>>>>> </faces-config>
>>>>>
>>>>> *login.jsp
>>>>>
>>>>>          <h:selectManyMenu value="#{login.groupsWorldCup}">
>>>>>            <f:selectItems value="#{groups}"/>
>>>>>          </h:selectManyMenu>
>>>>>
>>>>> *LoginBean.java
>>>>>
>>>>> package jsf.beans;
>>>>>
>>>>> import java.util.ArrayList;
>>>>>
>>>>> import javax.faces.application.FacesMessage;
>>>>> import javax.faces.component.UIComponent;
>>>>> import javax.faces.component.UIInput;
>>>>> import javax.faces.context.FacesContext;
>>>>>
>>>>> public class LoginBean {
>>>>>        private String userName;
>>>>>        private String passwd;
>>>>>        private Integer age=null;
>>>>>        private String text;
>>>>>        private int minimum;
>>>>>        private boolean check;
>>>>>        private String language;
>>>>>        private ArrayList<BookBean> bookList=new ArrayList<BookBean>();
>>>>>        private String style;
>>>>>        private ArrayList<String> role=new ArrayList<String>();
>>>>>        private ArrayList<String> menuList=new ArrayList<String>();
>>>>>        private ArrayList<String> groupsWorldCup=new
>>>>> ArrayList<String>();
>>>>>
>>>>>        public String getUserName() {
>>>>>                return userName;
>>>>>        }
>>>>>
>>>>>        public void setUserName(String userName) {
>>>>>                this.userName = userName;
>>>>>        }
>>>>>
>>>>>        public String getPasswd() {
>>>>>                return passwd;
>>>>>        }
>>>>>
>>>>>        public void setPasswd(String passwd) {
>>>>>                this.passwd = passwd;
>>>>>        }
>>>>>
>>>>>        public Integer getAge() {
>>>>>                return age;
>>>>>        }
>>>>>
>>>>>        public void setAge(Integer age) {
>>>>>                this.age = age;
>>>>>        }
>>>>>
>>>>>        public int getMinimum() {
>>>>>                return minimum;
>>>>>        }
>>>>>
>>>>>        public void setMinimum(int minimum) {
>>>>>                this.minimum = minimum;
>>>>>        }
>>>>>
>>>>>        public String getText() {
>>>>>                return text;
>>>>>        }
>>>>>
>>>>>        public void setText(String text) {
>>>>>                this.text = text;
>>>>>        }
>>>>>
>>>>>        public ArrayList<BookBean> getBookList() {
>>>>>                return bookList;
>>>>>        }
>>>>>
>>>>>        public void setBookList(ArrayList<BookBean> bookList) {
>>>>>                this.bookList = bookList;
>>>>>        }
>>>>>
>>>>>        public boolean isCheck() {
>>>>>                return check;
>>>>>        }
>>>>>
>>>>>        public void setCheck(boolean check) {
>>>>>                this.check = check;
>>>>>        }
>>>>>
>>>>>        public String getLanguage() {
>>>>>                return language;
>>>>>        }
>>>>>
>>>>>        public void setLanguage(String language) {
>>>>>                this.language = language;
>>>>>        }
>>>>>
>>>>>        public String getStyle() {
>>>>>                return style;
>>>>>        }
>>>>>
>>>>>        public void setStyle(String style) {
>>>>>                this.style = style;
>>>>>        }
>>>>>
>>>>>        public ArrayList<String> getRole() {
>>>>>                return role;
>>>>>        }
>>>>>
>>>>>        public void setRole(ArrayList<String> role) {
>>>>>                this.role = role;
>>>>>        }
>>>>>
>>>>>        public ArrayList<String> getMenuList() {
>>>>>                return menuList;
>>>>>        }
>>>>>
>>>>>        public void setMenuList(ArrayList<String> menuList) {
>>>>>                this.menuList = menuList;
>>>>>        }
>>>>>
>>>>>        public ArrayList<String> getGroupsWorldCup() {
>>>>>                return groupsWorldCup;
>>>>>        }
>>>>>
>>>>>        public void setGroupsWorldCup(ArrayList<String> groupsWorldCup)
>>>>> {
>>>>>                this.groupsWorldCup = groupsWorldCup;
>>>>>        }
>>>>>
>>>>>        public void checkUsername(FacesContext fcontext,UIComponent
>>>>> component,Object value){
>>>>>                String msg=(String)value;
>>>>>                if(!msg.equals("raul")){
>>>>>                        ((UIInput)component).setValid(false);
>>>>>
>>>>>  fcontext.addMessage(component.getClientId(fcontext),
>>>>> new FacesMessage("Usuario incorrecto"));
>>>>>                }
>>>>>        }
>>>>>
>>>>>        public void checkPasswd(FacesContext fcontext,UIComponent
>>>>> component,Object value){
>>>>>                if(!value.equals("vaji97")){
>>>>>                        ((UIInput)component).setValid(false);
>>>>>
>>>>>  fcontext.addMessage(component.getClientId(fcontext),
>>>>> new FacesMessage("Clave incorrecta"));
>>>>>                }
>>>>>        }
>>>>>
>>>>>        public String populateBookList(){
>>>>>                this.bookList.add(new BookBean(2,"Lord of the
>>>>> Rings",34));
>>>>>                this.bookList.add(new BookBean(3,"Codigo DVinci",38));
>>>>>                this.bookList.add(new BookBean(1,"Angels and
>>>>> Evils",36));
>>>>>                this.bookList.add(new BookBean(4,"Geisha history",27));
>>>>>                return "populate";
>>>>>        }
>>>>> }
>>>>>
>>>>>
>>>>> Any suggestions?.
>>>>>
>>>>> Thanks in advanced.
>>>>> --
>>>>> View this message in context:
>>>>> http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28958641.html
>>>>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28980436.html
>>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28991899.html
> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>
>

Re: JSF selectMany Tag problem

Posted by slayer666 <rf...@hotmail.es>.
Hi Mike,
that was the reason that caused the problem. Now the applicattion renders
another error when i executed.

javax.servlet.ServletException: Argument Error: An option for component
j_id_jsp_1961308526_35 was not an instance of javax.faces.model.SelectItem. 
Type found: java.util.ArrayList.
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)


causa raíz 

java.lang.IllegalArgumentException: Argument Error: An option for component
j_id_jsp_1961308526_35 was not an instance of javax.faces.model.SelectItem. 
Type found: java.util.ArrayList.

com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:306)

com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:814)

com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:148)

javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)

com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)

com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)

com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)

This is my resource file

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">
    
    <application>
      <resource-bundle>
        <base-name>jsf.properties.Application</base-name>
        <var>label</var>
      </resource-bundle> 
    </application> 
    <managed-bean>
      <managed-bean-name>groups</managed-bean-name>
      <managed-bean-class>java.util.ArrayList</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <list-entries>
         <value>#{groupA}</value>
      </list-entries>
    </managed-bean>  
    <managed-bean>
      <managed-bean-name>groupA</managed-bean-name>
      <managed-bean-class>javax.faces.model.SelectItem</managed-bean-class>
      <managed-bean-scope>none</managed-bean-scope>
      <managed-property>
        <property-name>label</property-name>
        <value>1-Brazil</value>
      </managed-property>
      <managed-property>
        <property-name>value</property-name>
        <value>Brazil</value>
      </managed-property>
      <managed-property>
        <property-name>label</property-name>
        <value>2-Spain</value>
      </managed-property>
      <managed-property>
        <property-name>value</property-name>
        <value>Spain</value>
      </managed-property>
      <managed-property>
        <property-name>label</property-name>
        <value>3-Korea</value>
      </managed-property>
      <managed-property>
        <property-name>value</property-name>
        <value>Korea</value>
      </managed-property>      
    </managed-bean>                     
    <managed-bean>
      <managed-bean-name>login</managed-bean-name>
      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class>
      <managed-bean-scope>request</managed-bean-scope>
      <managed-property>
        <property-name>minimum</property-name>        
        <value>18</value>
      </managed-property>      
    </managed-bean>
    <navigation-rule>
      <from-view-id>/index.jsp</from-view-id>
      <navigation-case>
        <from-outcome>loginSuccess</from-outcome>
        <to-view-id>/success.jsp</to-view-id>
      </navigation-case>       
    </navigation-rule>
    <navigation-rule>
      <from-view-id>/success.jsp</from-view-id>
      <navigation-case>
        <from-outcome>home</from-outcome>
        <to-view-id>/index.jsp</to-view-id>
      </navigation-case> 
      <navigation-case>
        <from-outcome>populate</from-outcome>
        <to-view-id>/bookStore.jsp</to-view-id>
      </navigation-case>                             
    </navigation-rule>               
</faces-config>

This is the snippet JSP code:

<h:selectManyMenu value="#{login.teams}">
            <f:selectItems value="#{groups}"/>
          </h:selectManyMenu>

And finally this is my bean class:

package jsf.beans;

import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.convert.DateTimeConverter;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.event.ValueChangeListener;
import javax.faces.model.SelectItem;

public class LoginBean {
	private String userName;
	private String passwd;
	private Integer age=null;
	private String text;
	private int minimum;
	private boolean check;
	private String language;
	private ArrayList<BookBean> bookList=new ArrayList<BookBean>();
	private String style;
	private ArrayList<String> role;
	private ArrayList<String> menuList;
	private ArrayList<Select> groupsWorldCup=new ArrayList<Select>();
	private ArrayList<String> teams=new ArrayList<String>();
	private Date dateLogin=new Date();
	private Locale brazilLocal=new Locale("pt","BR");
	private BuyActionListener buttonListener=new BuyActionListener();
			
	public BuyActionListener getButtonListener() {
		return buttonListener;
	}

	public void setButtonListener(BuyActionListener buttonListener) {
		this.buttonListener = buttonListener;
	}

	public Locale getBrazilLocal() {
		return brazilLocal;
	}

	public void setBrazilLocal(Locale brazilLocal) {
		this.brazilLocal = brazilLocal;
	}

	public ArrayList<String> getTeams() {
		return teams;
	}

	public void setTeams(ArrayList<String> teams) {
		this.teams = teams;
	}

	public LoginBean(){
		this.groupsWorldCup.add(new Select("Brazil","1-Brazil"));
		this.groupsWorldCup.add(new Select("Korea","2-Korea"));
		this.groupsWorldCup.add(new Select("Portugal","3-Portugal"));
	}
	
	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}
			
	public String getPasswd() {
		return passwd;
	}

	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
			
	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}
		
	public int getMinimum() {
		return minimum;
	}

	public void setMinimum(int minimum) {
		this.minimum = minimum;
	}
		
	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}		

	public ArrayList<BookBean> getBookList() {
		return bookList;
	}

	public void setBookList(ArrayList<BookBean> bookList) {
		this.bookList = bookList;
	}		

	public boolean isCheck() {
		return check;
	}

	public void setCheck(boolean check) {
		this.check = check;
	}
			
	public String getLanguage() {
		return language;
	}

	public void setLanguage(String language) {
		this.language = language;
	}
		
	public String getStyle() {
		return style;
	}

	public void setStyle(String style) {
		this.style = style;
	}
			
	public ArrayList<String> getRole() {
		return role;
	}

	public void setRole(ArrayList<String> role) {
		this.role = role;
	}			

	public ArrayList<String> getMenuList() {
		return menuList;
	}

	public void setMenuList(ArrayList<String> menuList) {
		this.menuList = menuList;
	}
				
	public ArrayList<Select> getGroupsWorldCup() {
		return groupsWorldCup;
	}

	public void setGroupsWorldCup(ArrayList<Select> groupsWorldCup) {
		this.groupsWorldCup = groupsWorldCup;
	}
		
	public Date getDateLogin() {
		return dateLogin;
	}

	public void setDateLogin(Date dateLogin) {
		this.dateLogin = dateLogin;
	}

	public void checkUsername(FacesContext fcontext,UIComponent
component,Object value){
		String msg=(String)value;
		if(!msg.equals("raul")){
			((UIInput)component).setValid(false);
			fcontext.addMessage(component.getClientId(fcontext), new
FacesMessage("Usuario incorrecto"));
		}
	}
	
	public void checkPasswd(FacesContext fcontext,UIComponent component,Object
value){
		if(!value.equals("vaji97")){
			((UIInput)component).setValid(false);
			fcontext.addMessage(component.getClientId(fcontext), new
FacesMessage("Clave incorrecta"));
		}
	}
	
	public String populateBookList(){
		this.bookList.add(new BookBean(2,"Lord of the Rings",34));
		this.bookList.add(new BookBean(3,"Codigo DVinci",38));
		this.bookList.add(new BookBean(1,"Angels and Evils",36));
		this.bookList.add(new BookBean(4,"Geisha history",27));
		return "populate";
	}
	
	public void changeValue(ValueChangeEvent evt){
		System.out.println("Valor nuevo:" +evt.getNewValue());
		System.out.println("Valor viejo:" +evt.getOldValue());		
	}
	
	public void buyAction(ActionEvent evt){
		System.out.println("Comprado el libro");
	}
}

Its a bit strange this error because according with my resource file the
application should instanciate an SelectItem array List in the value
attribute selectItems tag.

Thanks.

Regards:Raul.



Mike Kienenberger wrote:
> 
> I think the problem is that your Select class is not populating the
> label and value instance variables, leading to a NullPointerException.
> 
> I don't remember if there's a way to specify values for the
> constructor from managed beans -- I don't do a lot with managed beans
> in my JSF projects.
> 
> The spec says that the bean has to have a zero-args public
> constructor.   Your Select item does not.
> 
> It does look like Jsf 1.2 allows you to set the label and the value
> separately after the zero-arg constructor is called.
> 
> It does seem a bit odd that you're defining team1/team2 values on the
> Select class but aren't doing anything with them.
> 
> Maybe you want to do it like this:
> 
>    <managed-bean>
>      <managed-bean-name>groups</managed-bean-name>
>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>      <managed-bean-scope>session</managed-bean-scope>
>      <list-entries>
>        <value-class>jsf.beans.Select</value-class>
>        <value>#{groupA}</value>
>        <value>#{groupB}</value>
>      </list-entries>
>    </managed-bean>
> 
> [...]
> 
>      <managed-bean-name>groupA</managed-bean-name>
>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>      <managed-bean-scope>session</managed-bean-scope>
>      <managed-property>
>         <property-name>label</property-name>
>         <value>Brazil</value>
>      </managed-property>
>      <managed-property>
>         <property-name>value</property-name>
>         <value>Brazil</value>
>      </managed-property>
>    </managed-bean>
> 
>      <managed-bean-name>groupB</managed-bean-name>
>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>      <managed-bean-scope>session</managed-bean-scope>
>      <managed-property>
>         <property-name>label</property-name>
>         <value>Korea</value>
>      </managed-property>
>      <managed-property>
>         <property-name>value</property-name>
>         <value>Korea</value>
>      </managed-property>
>    </managed-bean>
> 
> I suspect what you're trying to do is create one SelectItem for each
> team, but it's really hard to know for certain.
> 
> I normally populate selectItems lists using a method on a bean...
> 
> <f:selectItems value="#{login.groups}"/>
> 
> and
> 
> public SelectItem[] getGroups() {
> 
> }
> 
> 
> On Thu, Jun 24, 2010 at 5:15 AM, slayer666 <rf...@hotmail.es> wrote:
>>
>> Hi, sorry but I forgott to post the Select bean class.
>>
>> package jsf.beans;
>>
>> import javax.faces.model.SelectItem;
>>
>> public class Select extends SelectItem {
>>        private String team1;
>>        private String team2;
>>        private String team3;
>>
>>        public Select(String v,String l){
>>                super(v,l);
>>        }
>>
>>        public String getTeam1() {
>>                return team1;
>>        }
>>        public void setTeam1(String team1) {
>>                this.team1 = team1;
>>        }
>>        public String getTeam2() {
>>                return team2;
>>        }
>>        public void setTeam2(String team2) {
>>                this.team2 = team2;
>>        }
>>        public String getTeam3() {
>>                return team3;
>>        }
>>        public void setTeam3(String team3) {
>>                this.team3 = team3;
>>        }
>>
>>
>>
>> }
>>
>> As you can see this class extends from SelectItem class so theoretically
>> i
>> have implemented a List of SelectedItems.
>>
>> Thanks.
>>
>>
>> Mike Kienenberger wrote:
>>>
>>> That's a new way (to me) to initialize a selectItems list.
>>>
>>> Are you certain that your "groups" beans are SelectItem instances?
>>>
>>> On Tue, Jun 22, 2010 at 6:51 AM, slayer666 <rf...@hotmail.es> wrote:
>>>>
>>>> Good morning, i am trying the JSF selectManyMenu tag and i when i
>>>> execute
>>>> the
>>>> aplication renders this trace log:
>>>>
>>>> javax.servlet.ServletException
>>>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
>>>>
>>>>
>>>> causa raíz
>>>>
>>>> java.lang.NullPointerException
>>>>
>>>> org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:171)
>>>>
>>>> com.sun.faces.application.ViewHandlerImpl$WriteBehindStateWriter.write(ViewHandlerImpl.java:867)
>>>>
>>>> com.sun.faces.renderkit.html_basic.HtmlResponseWriter.write(HtmlResponseWriter.java:620)
>>>>
>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:539)
>>>>
>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772)
>>>>
>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832)
>>>>
>>>> com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
>>>>
>>>> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
>>>>      
>>>>  javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
>>>>        javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
>>>>
>>>> javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
>>>>      
>>>>  javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
>>>>      
>>>>  javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
>>>>
>>>> com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
>>>>
>>>> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
>>>>
>>>> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
>>>>        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>>>>
>>>>  com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
>>>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
>>>>
>>>> This are the codes implemented:
>>>>
>>>> *faces-config.xml
>>>>
>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>
>>>> <faces-config
>>>>    xmlns="http://java.sun.com/xml/ns/javaee"
>>>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>> http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
>>>>    version="1.2">
>>>>
>>>>    <application>
>>>>      <resource-bundle>
>>>>        <base-name>jsf.properties.Application</base-name>
>>>>        <var>label</var>
>>>>      </resource-bundle>
>>>>    </application>
>>>>    <managed-bean>
>>>>      <managed-bean-name>groups</managed-bean-name>
>>>>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>>>>      <managed-bean-scope>session</managed-bean-scope>
>>>>      <list-entries>
>>>>        <value-class>jsf.beans.Select</value-class>
>>>>        <value>#{groupA}</value>
>>>>      </list-entries>
>>>>    </managed-bean>
>>>>    <managed-bean>
>>>>      <managed-bean-name>groupA</managed-bean-name>
>>>>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>>>>      <managed-bean-scope>session</managed-bean-scope>
>>>>      <managed-property>
>>>>         <property-name>team1</property-name>
>>>>         <value>Brazil</value>
>>>>      </managed-property>
>>>>      <managed-property>
>>>>         <property-name>team2</property-name>
>>>>         <value>Korea</value>
>>>>      </managed-property>
>>>>      <managed-property>
>>>>         <property-name>team3</property-name>
>>>>         <value>Portugal</value>
>>>>      </managed-property>
>>>>    </managed-bean>
>>>>    <managed-bean>
>>>>      <managed-bean-name>login</managed-bean-name>
>>>>      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class>
>>>>      <managed-bean-scope>request</managed-bean-scope>
>>>>      <managed-property>
>>>>        <property-name>minimum</property-name>
>>>>        <value>18</value>
>>>>      </managed-property>
>>>>    </managed-bean>
>>>>    <navigation-rule>
>>>>      <from-view-id>/index.jsp</from-view-id>
>>>>      <navigation-case>
>>>>        <from-outcome>loginSuccess</from-outcome>
>>>>        <to-view-id>/success.jsp</to-view-id>
>>>>      </navigation-case>
>>>>    </navigation-rule>
>>>>    <navigation-rule>
>>>>      <from-view-id>/success.jsp</from-view-id>
>>>>      <navigation-case>
>>>>        <from-outcome>home</from-outcome>
>>>>        <to-view-id>/index.jsp</to-view-id>
>>>>      </navigation-case>
>>>>      <navigation-case>
>>>>        <from-outcome>populate</from-outcome>
>>>>        <to-view-id>/bookStore.jsp</to-view-id>
>>>>      </navigation-case>
>>>>    </navigation-rule>
>>>> </faces-config>
>>>>
>>>> *login.jsp
>>>>
>>>>          <h:selectManyMenu value="#{login.groupsWorldCup}">
>>>>            <f:selectItems value="#{groups}"/>
>>>>          </h:selectManyMenu>
>>>>
>>>> *LoginBean.java
>>>>
>>>> package jsf.beans;
>>>>
>>>> import java.util.ArrayList;
>>>>
>>>> import javax.faces.application.FacesMessage;
>>>> import javax.faces.component.UIComponent;
>>>> import javax.faces.component.UIInput;
>>>> import javax.faces.context.FacesContext;
>>>>
>>>> public class LoginBean {
>>>>        private String userName;
>>>>        private String passwd;
>>>>        private Integer age=null;
>>>>        private String text;
>>>>        private int minimum;
>>>>        private boolean check;
>>>>        private String language;
>>>>        private ArrayList<BookBean> bookList=new ArrayList<BookBean>();
>>>>        private String style;
>>>>        private ArrayList<String> role=new ArrayList<String>();
>>>>        private ArrayList<String> menuList=new ArrayList<String>();
>>>>        private ArrayList<String> groupsWorldCup=new
>>>> ArrayList<String>();
>>>>
>>>>        public String getUserName() {
>>>>                return userName;
>>>>        }
>>>>
>>>>        public void setUserName(String userName) {
>>>>                this.userName = userName;
>>>>        }
>>>>
>>>>        public String getPasswd() {
>>>>                return passwd;
>>>>        }
>>>>
>>>>        public void setPasswd(String passwd) {
>>>>                this.passwd = passwd;
>>>>        }
>>>>
>>>>        public Integer getAge() {
>>>>                return age;
>>>>        }
>>>>
>>>>        public void setAge(Integer age) {
>>>>                this.age = age;
>>>>        }
>>>>
>>>>        public int getMinimum() {
>>>>                return minimum;
>>>>        }
>>>>
>>>>        public void setMinimum(int minimum) {
>>>>                this.minimum = minimum;
>>>>        }
>>>>
>>>>        public String getText() {
>>>>                return text;
>>>>        }
>>>>
>>>>        public void setText(String text) {
>>>>                this.text = text;
>>>>        }
>>>>
>>>>        public ArrayList<BookBean> getBookList() {
>>>>                return bookList;
>>>>        }
>>>>
>>>>        public void setBookList(ArrayList<BookBean> bookList) {
>>>>                this.bookList = bookList;
>>>>        }
>>>>
>>>>        public boolean isCheck() {
>>>>                return check;
>>>>        }
>>>>
>>>>        public void setCheck(boolean check) {
>>>>                this.check = check;
>>>>        }
>>>>
>>>>        public String getLanguage() {
>>>>                return language;
>>>>        }
>>>>
>>>>        public void setLanguage(String language) {
>>>>                this.language = language;
>>>>        }
>>>>
>>>>        public String getStyle() {
>>>>                return style;
>>>>        }
>>>>
>>>>        public void setStyle(String style) {
>>>>                this.style = style;
>>>>        }
>>>>
>>>>        public ArrayList<String> getRole() {
>>>>                return role;
>>>>        }
>>>>
>>>>        public void setRole(ArrayList<String> role) {
>>>>                this.role = role;
>>>>        }
>>>>
>>>>        public ArrayList<String> getMenuList() {
>>>>                return menuList;
>>>>        }
>>>>
>>>>        public void setMenuList(ArrayList<String> menuList) {
>>>>                this.menuList = menuList;
>>>>        }
>>>>
>>>>        public ArrayList<String> getGroupsWorldCup() {
>>>>                return groupsWorldCup;
>>>>        }
>>>>
>>>>        public void setGroupsWorldCup(ArrayList<String> groupsWorldCup)
>>>> {
>>>>                this.groupsWorldCup = groupsWorldCup;
>>>>        }
>>>>
>>>>        public void checkUsername(FacesContext fcontext,UIComponent
>>>> component,Object value){
>>>>                String msg=(String)value;
>>>>                if(!msg.equals("raul")){
>>>>                        ((UIInput)component).setValid(false);
>>>>
>>>>  fcontext.addMessage(component.getClientId(fcontext),
>>>> new FacesMessage("Usuario incorrecto"));
>>>>                }
>>>>        }
>>>>
>>>>        public void checkPasswd(FacesContext fcontext,UIComponent
>>>> component,Object value){
>>>>                if(!value.equals("vaji97")){
>>>>                        ((UIInput)component).setValid(false);
>>>>
>>>>  fcontext.addMessage(component.getClientId(fcontext),
>>>> new FacesMessage("Clave incorrecta"));
>>>>                }
>>>>        }
>>>>
>>>>        public String populateBookList(){
>>>>                this.bookList.add(new BookBean(2,"Lord of the
>>>> Rings",34));
>>>>                this.bookList.add(new BookBean(3,"Codigo DVinci",38));
>>>>                this.bookList.add(new BookBean(1,"Angels and
>>>> Evils",36));
>>>>                this.bookList.add(new BookBean(4,"Geisha history",27));
>>>>                return "populate";
>>>>        }
>>>> }
>>>>
>>>>
>>>> Any suggestions?.
>>>>
>>>> Thanks in advanced.
>>>> --
>>>> View this message in context:
>>>> http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28958641.html
>>>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28980436.html
>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28991899.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.


Re: JSF selectMany Tag problem

Posted by Mike Kienenberger <mk...@gmail.com>.
I think the problem is that your Select class is not populating the
label and value instance variables, leading to a NullPointerException.

I don't remember if there's a way to specify values for the
constructor from managed beans -- I don't do a lot with managed beans
in my JSF projects.

The spec says that the bean has to have a zero-args public
constructor.   Your Select item does not.

It does look like Jsf 1.2 allows you to set the label and the value
separately after the zero-arg constructor is called.

It does seem a bit odd that you're defining team1/team2 values on the
Select class but aren't doing anything with them.

Maybe you want to do it like this:

   <managed-bean>
     <managed-bean-name>groups</managed-bean-name>
     <managed-bean-class>java.util.ArrayList</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>
     <list-entries>
       <value-class>jsf.beans.Select</value-class>
       <value>#{groupA}</value>
       <value>#{groupB}</value>
     </list-entries>
   </managed-bean>

[...]

     <managed-bean-name>groupA</managed-bean-name>
     <managed-bean-class>jsf.beans.Select</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>
     <managed-property>
        <property-name>label</property-name>
        <value>Brazil</value>
     </managed-property>
     <managed-property>
        <property-name>value</property-name>
        <value>Brazil</value>
     </managed-property>
   </managed-bean>

     <managed-bean-name>groupB</managed-bean-name>
     <managed-bean-class>jsf.beans.Select</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>
     <managed-property>
        <property-name>label</property-name>
        <value>Korea</value>
     </managed-property>
     <managed-property>
        <property-name>value</property-name>
        <value>Korea</value>
     </managed-property>
   </managed-bean>

I suspect what you're trying to do is create one SelectItem for each
team, but it's really hard to know for certain.

I normally populate selectItems lists using a method on a bean...

<f:selectItems value="#{login.groups}"/>

and

public SelectItem[] getGroups() {

}


On Thu, Jun 24, 2010 at 5:15 AM, slayer666 <rf...@hotmail.es> wrote:
>
> Hi, sorry but I forgott to post the Select bean class.
>
> package jsf.beans;
>
> import javax.faces.model.SelectItem;
>
> public class Select extends SelectItem {
>        private String team1;
>        private String team2;
>        private String team3;
>
>        public Select(String v,String l){
>                super(v,l);
>        }
>
>        public String getTeam1() {
>                return team1;
>        }
>        public void setTeam1(String team1) {
>                this.team1 = team1;
>        }
>        public String getTeam2() {
>                return team2;
>        }
>        public void setTeam2(String team2) {
>                this.team2 = team2;
>        }
>        public String getTeam3() {
>                return team3;
>        }
>        public void setTeam3(String team3) {
>                this.team3 = team3;
>        }
>
>
>
> }
>
> As you can see this class extends from SelectItem class so theoretically i
> have implemented a List of SelectedItems.
>
> Thanks.
>
>
> Mike Kienenberger wrote:
>>
>> That's a new way (to me) to initialize a selectItems list.
>>
>> Are you certain that your "groups" beans are SelectItem instances?
>>
>> On Tue, Jun 22, 2010 at 6:51 AM, slayer666 <rf...@hotmail.es> wrote:
>>>
>>> Good morning, i am trying the JSF selectManyMenu tag and i when i execute
>>> the
>>> aplication renders this trace log:
>>>
>>> javax.servlet.ServletException
>>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
>>>
>>>
>>> causa raíz
>>>
>>> java.lang.NullPointerException
>>>
>>> org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:171)
>>>
>>> com.sun.faces.application.ViewHandlerImpl$WriteBehindStateWriter.write(ViewHandlerImpl.java:867)
>>>
>>> com.sun.faces.renderkit.html_basic.HtmlResponseWriter.write(HtmlResponseWriter.java:620)
>>>
>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:539)
>>>
>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772)
>>>
>>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832)
>>>
>>> com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
>>>
>>> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
>>>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
>>>        javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
>>>
>>> javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
>>>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
>>>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
>>>
>>> com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
>>>
>>> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
>>>
>>> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
>>>        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>>>
>>>  com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
>>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
>>>
>>> This are the codes implemented:
>>>
>>> *faces-config.xml
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>>
>>> <faces-config
>>>    xmlns="http://java.sun.com/xml/ns/javaee"
>>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>> http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
>>>    version="1.2">
>>>
>>>    <application>
>>>      <resource-bundle>
>>>        <base-name>jsf.properties.Application</base-name>
>>>        <var>label</var>
>>>      </resource-bundle>
>>>    </application>
>>>    <managed-bean>
>>>      <managed-bean-name>groups</managed-bean-name>
>>>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>>>      <managed-bean-scope>session</managed-bean-scope>
>>>      <list-entries>
>>>        <value-class>jsf.beans.Select</value-class>
>>>        <value>#{groupA}</value>
>>>      </list-entries>
>>>    </managed-bean>
>>>    <managed-bean>
>>>      <managed-bean-name>groupA</managed-bean-name>
>>>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>>>      <managed-bean-scope>session</managed-bean-scope>
>>>      <managed-property>
>>>         <property-name>team1</property-name>
>>>         <value>Brazil</value>
>>>      </managed-property>
>>>      <managed-property>
>>>         <property-name>team2</property-name>
>>>         <value>Korea</value>
>>>      </managed-property>
>>>      <managed-property>
>>>         <property-name>team3</property-name>
>>>         <value>Portugal</value>
>>>      </managed-property>
>>>    </managed-bean>
>>>    <managed-bean>
>>>      <managed-bean-name>login</managed-bean-name>
>>>      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class>
>>>      <managed-bean-scope>request</managed-bean-scope>
>>>      <managed-property>
>>>        <property-name>minimum</property-name>
>>>        <value>18</value>
>>>      </managed-property>
>>>    </managed-bean>
>>>    <navigation-rule>
>>>      <from-view-id>/index.jsp</from-view-id>
>>>      <navigation-case>
>>>        <from-outcome>loginSuccess</from-outcome>
>>>        <to-view-id>/success.jsp</to-view-id>
>>>      </navigation-case>
>>>    </navigation-rule>
>>>    <navigation-rule>
>>>      <from-view-id>/success.jsp</from-view-id>
>>>      <navigation-case>
>>>        <from-outcome>home</from-outcome>
>>>        <to-view-id>/index.jsp</to-view-id>
>>>      </navigation-case>
>>>      <navigation-case>
>>>        <from-outcome>populate</from-outcome>
>>>        <to-view-id>/bookStore.jsp</to-view-id>
>>>      </navigation-case>
>>>    </navigation-rule>
>>> </faces-config>
>>>
>>> *login.jsp
>>>
>>>          <h:selectManyMenu value="#{login.groupsWorldCup}">
>>>            <f:selectItems value="#{groups}"/>
>>>          </h:selectManyMenu>
>>>
>>> *LoginBean.java
>>>
>>> package jsf.beans;
>>>
>>> import java.util.ArrayList;
>>>
>>> import javax.faces.application.FacesMessage;
>>> import javax.faces.component.UIComponent;
>>> import javax.faces.component.UIInput;
>>> import javax.faces.context.FacesContext;
>>>
>>> public class LoginBean {
>>>        private String userName;
>>>        private String passwd;
>>>        private Integer age=null;
>>>        private String text;
>>>        private int minimum;
>>>        private boolean check;
>>>        private String language;
>>>        private ArrayList<BookBean> bookList=new ArrayList<BookBean>();
>>>        private String style;
>>>        private ArrayList<String> role=new ArrayList<String>();
>>>        private ArrayList<String> menuList=new ArrayList<String>();
>>>        private ArrayList<String> groupsWorldCup=new ArrayList<String>();
>>>
>>>        public String getUserName() {
>>>                return userName;
>>>        }
>>>
>>>        public void setUserName(String userName) {
>>>                this.userName = userName;
>>>        }
>>>
>>>        public String getPasswd() {
>>>                return passwd;
>>>        }
>>>
>>>        public void setPasswd(String passwd) {
>>>                this.passwd = passwd;
>>>        }
>>>
>>>        public Integer getAge() {
>>>                return age;
>>>        }
>>>
>>>        public void setAge(Integer age) {
>>>                this.age = age;
>>>        }
>>>
>>>        public int getMinimum() {
>>>                return minimum;
>>>        }
>>>
>>>        public void setMinimum(int minimum) {
>>>                this.minimum = minimum;
>>>        }
>>>
>>>        public String getText() {
>>>                return text;
>>>        }
>>>
>>>        public void setText(String text) {
>>>                this.text = text;
>>>        }
>>>
>>>        public ArrayList<BookBean> getBookList() {
>>>                return bookList;
>>>        }
>>>
>>>        public void setBookList(ArrayList<BookBean> bookList) {
>>>                this.bookList = bookList;
>>>        }
>>>
>>>        public boolean isCheck() {
>>>                return check;
>>>        }
>>>
>>>        public void setCheck(boolean check) {
>>>                this.check = check;
>>>        }
>>>
>>>        public String getLanguage() {
>>>                return language;
>>>        }
>>>
>>>        public void setLanguage(String language) {
>>>                this.language = language;
>>>        }
>>>
>>>        public String getStyle() {
>>>                return style;
>>>        }
>>>
>>>        public void setStyle(String style) {
>>>                this.style = style;
>>>        }
>>>
>>>        public ArrayList<String> getRole() {
>>>                return role;
>>>        }
>>>
>>>        public void setRole(ArrayList<String> role) {
>>>                this.role = role;
>>>        }
>>>
>>>        public ArrayList<String> getMenuList() {
>>>                return menuList;
>>>        }
>>>
>>>        public void setMenuList(ArrayList<String> menuList) {
>>>                this.menuList = menuList;
>>>        }
>>>
>>>        public ArrayList<String> getGroupsWorldCup() {
>>>                return groupsWorldCup;
>>>        }
>>>
>>>        public void setGroupsWorldCup(ArrayList<String> groupsWorldCup) {
>>>                this.groupsWorldCup = groupsWorldCup;
>>>        }
>>>
>>>        public void checkUsername(FacesContext fcontext,UIComponent
>>> component,Object value){
>>>                String msg=(String)value;
>>>                if(!msg.equals("raul")){
>>>                        ((UIInput)component).setValid(false);
>>>
>>>  fcontext.addMessage(component.getClientId(fcontext),
>>> new FacesMessage("Usuario incorrecto"));
>>>                }
>>>        }
>>>
>>>        public void checkPasswd(FacesContext fcontext,UIComponent
>>> component,Object value){
>>>                if(!value.equals("vaji97")){
>>>                        ((UIInput)component).setValid(false);
>>>
>>>  fcontext.addMessage(component.getClientId(fcontext),
>>> new FacesMessage("Clave incorrecta"));
>>>                }
>>>        }
>>>
>>>        public String populateBookList(){
>>>                this.bookList.add(new BookBean(2,"Lord of the Rings",34));
>>>                this.bookList.add(new BookBean(3,"Codigo DVinci",38));
>>>                this.bookList.add(new BookBean(1,"Angels and Evils",36));
>>>                this.bookList.add(new BookBean(4,"Geisha history",27));
>>>                return "populate";
>>>        }
>>> }
>>>
>>>
>>> Any suggestions?.
>>>
>>> Thanks in advanced.
>>> --
>>> View this message in context:
>>> http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28958641.html
>>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
>
> --
> View this message in context: http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28980436.html
> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>
>

Re: JSF selectMany Tag problem

Posted by slayer666 <rf...@hotmail.es>.
Hi, sorry but I forgott to post the Select bean class.

package jsf.beans;

import javax.faces.model.SelectItem;

public class Select extends SelectItem {
	private String team1;
	private String team2;
	private String team3;
	
	public Select(String v,String l){
		super(v,l);
	}
	
	public String getTeam1() {
		return team1;
	}
	public void setTeam1(String team1) {
		this.team1 = team1;
	}
	public String getTeam2() {
		return team2;
	}
	public void setTeam2(String team2) {
		this.team2 = team2;
	}
	public String getTeam3() {
		return team3;
	}
	public void setTeam3(String team3) {
		this.team3 = team3;
	}
	
	

}

As you can see this class extends from SelectItem class so theoretically i
have implemented a List of SelectedItems.

Thanks.


Mike Kienenberger wrote:
> 
> That's a new way (to me) to initialize a selectItems list.
> 
> Are you certain that your "groups" beans are SelectItem instances?
> 
> On Tue, Jun 22, 2010 at 6:51 AM, slayer666 <rf...@hotmail.es> wrote:
>>
>> Good morning, i am trying the JSF selectManyMenu tag and i when i execute
>> the
>> aplication renders this trace log:
>>
>> javax.servlet.ServletException
>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
>>
>>
>> causa raíz
>>
>> java.lang.NullPointerException
>>
>> org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:171)
>>
>> com.sun.faces.application.ViewHandlerImpl$WriteBehindStateWriter.write(ViewHandlerImpl.java:867)
>>
>> com.sun.faces.renderkit.html_basic.HtmlResponseWriter.write(HtmlResponseWriter.java:620)
>>
>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:539)
>>
>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772)
>>
>> com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832)
>>
>> com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
>>
>> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
>>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
>>        javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
>>
>> javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
>>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
>>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
>>
>> com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
>>
>> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
>>
>> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
>>        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>>      
>>  com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
>>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
>>
>> This are the codes implemented:
>>
>> *faces-config.xml
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>>
>> <faces-config
>>    xmlns="http://java.sun.com/xml/ns/javaee"
>>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>> http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
>>    version="1.2">
>>
>>    <application>
>>      <resource-bundle>
>>        <base-name>jsf.properties.Application</base-name>
>>        <var>label</var>
>>      </resource-bundle>
>>    </application>
>>    <managed-bean>
>>      <managed-bean-name>groups</managed-bean-name>
>>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>>      <managed-bean-scope>session</managed-bean-scope>
>>      <list-entries>
>>        <value-class>jsf.beans.Select</value-class>
>>        <value>#{groupA}</value>
>>      </list-entries>
>>    </managed-bean>
>>    <managed-bean>
>>      <managed-bean-name>groupA</managed-bean-name>
>>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>>      <managed-bean-scope>session</managed-bean-scope>
>>      <managed-property>
>>         <property-name>team1</property-name>
>>         <value>Brazil</value>
>>      </managed-property>
>>      <managed-property>
>>         <property-name>team2</property-name>
>>         <value>Korea</value>
>>      </managed-property>
>>      <managed-property>
>>         <property-name>team3</property-name>
>>         <value>Portugal</value>
>>      </managed-property>
>>    </managed-bean>
>>    <managed-bean>
>>      <managed-bean-name>login</managed-bean-name>
>>      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class>
>>      <managed-bean-scope>request</managed-bean-scope>
>>      <managed-property>
>>        <property-name>minimum</property-name>
>>        <value>18</value>
>>      </managed-property>
>>    </managed-bean>
>>    <navigation-rule>
>>      <from-view-id>/index.jsp</from-view-id>
>>      <navigation-case>
>>        <from-outcome>loginSuccess</from-outcome>
>>        <to-view-id>/success.jsp</to-view-id>
>>      </navigation-case>
>>    </navigation-rule>
>>    <navigation-rule>
>>      <from-view-id>/success.jsp</from-view-id>
>>      <navigation-case>
>>        <from-outcome>home</from-outcome>
>>        <to-view-id>/index.jsp</to-view-id>
>>      </navigation-case>
>>      <navigation-case>
>>        <from-outcome>populate</from-outcome>
>>        <to-view-id>/bookStore.jsp</to-view-id>
>>      </navigation-case>
>>    </navigation-rule>
>> </faces-config>
>>
>> *login.jsp
>>
>>          <h:selectManyMenu value="#{login.groupsWorldCup}">
>>            <f:selectItems value="#{groups}"/>
>>          </h:selectManyMenu>
>>
>> *LoginBean.java
>>
>> package jsf.beans;
>>
>> import java.util.ArrayList;
>>
>> import javax.faces.application.FacesMessage;
>> import javax.faces.component.UIComponent;
>> import javax.faces.component.UIInput;
>> import javax.faces.context.FacesContext;
>>
>> public class LoginBean {
>>        private String userName;
>>        private String passwd;
>>        private Integer age=null;
>>        private String text;
>>        private int minimum;
>>        private boolean check;
>>        private String language;
>>        private ArrayList<BookBean> bookList=new ArrayList<BookBean>();
>>        private String style;
>>        private ArrayList<String> role=new ArrayList<String>();
>>        private ArrayList<String> menuList=new ArrayList<String>();
>>        private ArrayList<String> groupsWorldCup=new ArrayList<String>();
>>
>>        public String getUserName() {
>>                return userName;
>>        }
>>
>>        public void setUserName(String userName) {
>>                this.userName = userName;
>>        }
>>
>>        public String getPasswd() {
>>                return passwd;
>>        }
>>
>>        public void setPasswd(String passwd) {
>>                this.passwd = passwd;
>>        }
>>
>>        public Integer getAge() {
>>                return age;
>>        }
>>
>>        public void setAge(Integer age) {
>>                this.age = age;
>>        }
>>
>>        public int getMinimum() {
>>                return minimum;
>>        }
>>
>>        public void setMinimum(int minimum) {
>>                this.minimum = minimum;
>>        }
>>
>>        public String getText() {
>>                return text;
>>        }
>>
>>        public void setText(String text) {
>>                this.text = text;
>>        }
>>
>>        public ArrayList<BookBean> getBookList() {
>>                return bookList;
>>        }
>>
>>        public void setBookList(ArrayList<BookBean> bookList) {
>>                this.bookList = bookList;
>>        }
>>
>>        public boolean isCheck() {
>>                return check;
>>        }
>>
>>        public void setCheck(boolean check) {
>>                this.check = check;
>>        }
>>
>>        public String getLanguage() {
>>                return language;
>>        }
>>
>>        public void setLanguage(String language) {
>>                this.language = language;
>>        }
>>
>>        public String getStyle() {
>>                return style;
>>        }
>>
>>        public void setStyle(String style) {
>>                this.style = style;
>>        }
>>
>>        public ArrayList<String> getRole() {
>>                return role;
>>        }
>>
>>        public void setRole(ArrayList<String> role) {
>>                this.role = role;
>>        }
>>
>>        public ArrayList<String> getMenuList() {
>>                return menuList;
>>        }
>>
>>        public void setMenuList(ArrayList<String> menuList) {
>>                this.menuList = menuList;
>>        }
>>
>>        public ArrayList<String> getGroupsWorldCup() {
>>                return groupsWorldCup;
>>        }
>>
>>        public void setGroupsWorldCup(ArrayList<String> groupsWorldCup) {
>>                this.groupsWorldCup = groupsWorldCup;
>>        }
>>
>>        public void checkUsername(FacesContext fcontext,UIComponent
>> component,Object value){
>>                String msg=(String)value;
>>                if(!msg.equals("raul")){
>>                        ((UIInput)component).setValid(false);
>>                      
>>  fcontext.addMessage(component.getClientId(fcontext),
>> new FacesMessage("Usuario incorrecto"));
>>                }
>>        }
>>
>>        public void checkPasswd(FacesContext fcontext,UIComponent
>> component,Object value){
>>                if(!value.equals("vaji97")){
>>                        ((UIInput)component).setValid(false);
>>                      
>>  fcontext.addMessage(component.getClientId(fcontext),
>> new FacesMessage("Clave incorrecta"));
>>                }
>>        }
>>
>>        public String populateBookList(){
>>                this.bookList.add(new BookBean(2,"Lord of the Rings",34));
>>                this.bookList.add(new BookBean(3,"Codigo DVinci",38));
>>                this.bookList.add(new BookBean(1,"Angels and Evils",36));
>>                this.bookList.add(new BookBean(4,"Geisha history",27));
>>                return "populate";
>>        }
>> }
>>
>>
>> Any suggestions?.
>>
>> Thanks in advanced.
>> --
>> View this message in context:
>> http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28958641.html
>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>
>>
> 
> 

-- 
View this message in context: http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28980436.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.


Re: JSF selectMany Tag problem

Posted by Mike Kienenberger <mk...@gmail.com>.
That's a new way (to me) to initialize a selectItems list.

Are you certain that your "groups" beans are SelectItem instances?

On Tue, Jun 22, 2010 at 6:51 AM, slayer666 <rf...@hotmail.es> wrote:
>
> Good morning, i am trying the JSF selectManyMenu tag and i when i execute the
> aplication renders this trace log:
>
> javax.servlet.ServletException
>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:277)
>
>
> causa raíz
>
> java.lang.NullPointerException
>
> org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:171)
>
> com.sun.faces.application.ViewHandlerImpl$WriteBehindStateWriter.write(ViewHandlerImpl.java:867)
>
> com.sun.faces.renderkit.html_basic.HtmlResponseWriter.write(HtmlResponseWriter.java:620)
>
> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOption(MenuRenderer.java:539)
>
> com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:772)
>
> com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:832)
>
> com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
>
> javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
>        javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
>
> javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
>        javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
>
> com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
>
> com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
>
> com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
>        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>        com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
>        javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
>
> This are the codes implemented:
>
> *faces-config.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <faces-config
>    xmlns="http://java.sun.com/xml/ns/javaee"
>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
>    version="1.2">
>
>    <application>
>      <resource-bundle>
>        <base-name>jsf.properties.Application</base-name>
>        <var>label</var>
>      </resource-bundle>
>    </application>
>    <managed-bean>
>      <managed-bean-name>groups</managed-bean-name>
>      <managed-bean-class>java.util.ArrayList</managed-bean-class>
>      <managed-bean-scope>session</managed-bean-scope>
>      <list-entries>
>        <value-class>jsf.beans.Select</value-class>
>        <value>#{groupA}</value>
>      </list-entries>
>    </managed-bean>
>    <managed-bean>
>      <managed-bean-name>groupA</managed-bean-name>
>      <managed-bean-class>jsf.beans.Select</managed-bean-class>
>      <managed-bean-scope>session</managed-bean-scope>
>      <managed-property>
>         <property-name>team1</property-name>
>         <value>Brazil</value>
>      </managed-property>
>      <managed-property>
>         <property-name>team2</property-name>
>         <value>Korea</value>
>      </managed-property>
>      <managed-property>
>         <property-name>team3</property-name>
>         <value>Portugal</value>
>      </managed-property>
>    </managed-bean>
>    <managed-bean>
>      <managed-bean-name>login</managed-bean-name>
>      <managed-bean-class>jsf.beans.LoginBean</managed-bean-class>
>      <managed-bean-scope>request</managed-bean-scope>
>      <managed-property>
>        <property-name>minimum</property-name>
>        <value>18</value>
>      </managed-property>
>    </managed-bean>
>    <navigation-rule>
>      <from-view-id>/index.jsp</from-view-id>
>      <navigation-case>
>        <from-outcome>loginSuccess</from-outcome>
>        <to-view-id>/success.jsp</to-view-id>
>      </navigation-case>
>    </navigation-rule>
>    <navigation-rule>
>      <from-view-id>/success.jsp</from-view-id>
>      <navigation-case>
>        <from-outcome>home</from-outcome>
>        <to-view-id>/index.jsp</to-view-id>
>      </navigation-case>
>      <navigation-case>
>        <from-outcome>populate</from-outcome>
>        <to-view-id>/bookStore.jsp</to-view-id>
>      </navigation-case>
>    </navigation-rule>
> </faces-config>
>
> *login.jsp
>
>          <h:selectManyMenu value="#{login.groupsWorldCup}">
>            <f:selectItems value="#{groups}"/>
>          </h:selectManyMenu>
>
> *LoginBean.java
>
> package jsf.beans;
>
> import java.util.ArrayList;
>
> import javax.faces.application.FacesMessage;
> import javax.faces.component.UIComponent;
> import javax.faces.component.UIInput;
> import javax.faces.context.FacesContext;
>
> public class LoginBean {
>        private String userName;
>        private String passwd;
>        private Integer age=null;
>        private String text;
>        private int minimum;
>        private boolean check;
>        private String language;
>        private ArrayList<BookBean> bookList=new ArrayList<BookBean>();
>        private String style;
>        private ArrayList<String> role=new ArrayList<String>();
>        private ArrayList<String> menuList=new ArrayList<String>();
>        private ArrayList<String> groupsWorldCup=new ArrayList<String>();
>
>        public String getUserName() {
>                return userName;
>        }
>
>        public void setUserName(String userName) {
>                this.userName = userName;
>        }
>
>        public String getPasswd() {
>                return passwd;
>        }
>
>        public void setPasswd(String passwd) {
>                this.passwd = passwd;
>        }
>
>        public Integer getAge() {
>                return age;
>        }
>
>        public void setAge(Integer age) {
>                this.age = age;
>        }
>
>        public int getMinimum() {
>                return minimum;
>        }
>
>        public void setMinimum(int minimum) {
>                this.minimum = minimum;
>        }
>
>        public String getText() {
>                return text;
>        }
>
>        public void setText(String text) {
>                this.text = text;
>        }
>
>        public ArrayList<BookBean> getBookList() {
>                return bookList;
>        }
>
>        public void setBookList(ArrayList<BookBean> bookList) {
>                this.bookList = bookList;
>        }
>
>        public boolean isCheck() {
>                return check;
>        }
>
>        public void setCheck(boolean check) {
>                this.check = check;
>        }
>
>        public String getLanguage() {
>                return language;
>        }
>
>        public void setLanguage(String language) {
>                this.language = language;
>        }
>
>        public String getStyle() {
>                return style;
>        }
>
>        public void setStyle(String style) {
>                this.style = style;
>        }
>
>        public ArrayList<String> getRole() {
>                return role;
>        }
>
>        public void setRole(ArrayList<String> role) {
>                this.role = role;
>        }
>
>        public ArrayList<String> getMenuList() {
>                return menuList;
>        }
>
>        public void setMenuList(ArrayList<String> menuList) {
>                this.menuList = menuList;
>        }
>
>        public ArrayList<String> getGroupsWorldCup() {
>                return groupsWorldCup;
>        }
>
>        public void setGroupsWorldCup(ArrayList<String> groupsWorldCup) {
>                this.groupsWorldCup = groupsWorldCup;
>        }
>
>        public void checkUsername(FacesContext fcontext,UIComponent
> component,Object value){
>                String msg=(String)value;
>                if(!msg.equals("raul")){
>                        ((UIInput)component).setValid(false);
>                        fcontext.addMessage(component.getClientId(fcontext),
> new FacesMessage("Usuario incorrecto"));
>                }
>        }
>
>        public void checkPasswd(FacesContext fcontext,UIComponent
> component,Object value){
>                if(!value.equals("vaji97")){
>                        ((UIInput)component).setValid(false);
>                        fcontext.addMessage(component.getClientId(fcontext),
> new FacesMessage("Clave incorrecta"));
>                }
>        }
>
>        public String populateBookList(){
>                this.bookList.add(new BookBean(2,"Lord of the Rings",34));
>                this.bookList.add(new BookBean(3,"Codigo DVinci",38));
>                this.bookList.add(new BookBean(1,"Angels and Evils",36));
>                this.bookList.add(new BookBean(4,"Geisha history",27));
>                return "populate";
>        }
> }
>
>
> Any suggestions?.
>
> Thanks in advanced.
> --
> View this message in context: http://old.nabble.com/JSF-selectMany-Tag-problem-tp28958641p28958641.html
> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>
>