selectOneMenu Validation Error

Hi.

As usual, I'm experiencing state-of-art problems with JSF.

Here is a nice and simple login form:

Login.jsp

<h:form id="login">

<h:panelGrid columns="2" styleClass="Grid">

<h:outputText value="#{msg.Username}:" />

<h:inputText id="username" value="#{LoginBean.userName}"

maxlength="50" required="true" />

<h:outputText value="#{msg.Password}:" />

<h:inputText id="password" value="#{LoginBean.passWord}"

maxlength="50" required="true" />

<h:outputText value="#{msg.Language}:" />

<h:selectOneMenu id="language" value="#{LoginBean.locale}">

<f:selectItems value="#{LoginBean.selectList}" />

</h:selectOneMenu>

<f:facet name="footer">

<h:commandButton styleClass="Button" value="#{msg.Submit}"

action="#{LoginBean.logIn}" />

</f:facet>

</h:panelGrid>

</h:form>

LoginBean.java

public String getLocale()

{

if (this.locale ==null)

this.locale ="tr_TR";

return this.locale;

}

publicvoid setLocale(String locale)

{

this.locale = locale;

FacesContext context = FacesContext.getCurrentInstance();

context.getViewRoot().setLocale(new Locale(this.locale));

}

public SelectItem[] getSelectList()

{

SelectItem[] List =new SelectItem[2];

List[0] =new SelectItem("tr_TR","TR");

List[1] =new SelectItem("en_US","EN");

return List;

}

If I deploy applicationbefore running Tomcat, I got:

body:login:language: Validation Error: Value is not valid

If I deploy applicationafter running Tomcat it works.

Any ideas ?

[3005 byte] By [GBerberoglua] at [2007-11-26 14:50:42]
# 1
Really need help here..
GBerberoglua at 2007-7-8 8:38:49 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2

OK I find the problem..

I noticed that when tomcat (6.0.x)static deploy the app I got a exception:

SEVERE: Error Instantiating ExpressionFactory

java.lang.ClassNotFoundException: com.sun.el.ExpressionFactoryImpl

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:169)

at com.sun.faces.config.ConfigureListener.registerELResolverAndListenerWithJsp(ConfigureListener.java:1606)

at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:455)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4336)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)

at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)

at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)

at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)

at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)

at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)

at org.apache.catalina.core.StandardService.start(StandardService.java:451)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)

at org.apache.catalina.startup.Catalina.start(Catalina.java:552)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

which does not occurs in dynamic deploy.

Then (after googling) I add following code to web.xml and that and all other strange problems are gone.

<context-param>

<param-name>com.sun.faces.expressionFactory</param-name>

<param-value>org.apache.el.ExpressionFactoryImpl</param-value>

</context-param>

I hate english by teh way.

GBerberoglua at 2007-7-8 8:38:49 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...