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.
>
>