You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Mike Kienenberger <mk...@gmail.com> on 2007/04/17 03:41:47 UTC

[TOBAGO] addressbook demo crashes on phone number validation

Just going through the Tobago addressbook demo.

Grabbed it from svn, and then ran this command:

C:\workspaces\myfaces\addressbook-1.0.10>mvn jetty:run-exploded

I created a new address, and put in a phone number in this format
111-111-1111 and I got the following error (which is probably
unrelated to the actual data input).

Looks like the root cause is:

java.util.MissingResourceException: Can't find resource for bundle
java.util.PropertyResourceBundle, key validator_phone

=========================

HTTP ERROR: 500

Exception while invoking expression #{controller.validatePhoneNumber}

RequestURI=/tobago-example-addressbook/faces/editor.jsp
Caused by:

javax.faces.el.EvaluationException: Exception while invoking
expression #{controller.validatePhoneNumber}
	at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:156)
	at javax.faces.component._ComponentUtils.callValidators(_ComponentUtils.java:181)
	at javax.faces.component.UIInput.validateValue(UIInput.java:313)
	at javax.faces.component.UIInput.validate(UIInput.java:354)
	at javax.faces.component.UIInput.processValidators(UIInput.java:184)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at org.apache.myfaces.tobago.component.UITabGroup.processValidators(UITabGroup.java:172)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at org.apache.myfaces.tobago.component.UIForm.processValidators(UIForm.java:71)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:149)
	at org.apache.myfaces.tobago.component.UIViewRoot.processValidators(UIViewRoot.java:175)
	at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074)
	at org.apache.myfaces.tobago.webapp.TobagoMultipartFormdataFilter.doFilter(TobagoMultipartFormdataFilter.java:130)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: java.util.MissingResourceException: Can't find resource for
bundle java.util.PropertyResourceBundle, key validator_phone
	at java.util.ResourceBundle.getObject(ResourceBundle.java:325)
	at java.util.ResourceBundle.getString(ResourceBundle.java:285)
	at org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.getLocalizedString(MessageUtils.java:34)
	at org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.createErrorMessage(MessageUtils.java:53)
	at org.apache.myfaces.tobago.example.addressbook.web.Controller.validatePhoneNumber(Controller.java:195)
	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:585)
	at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
	... 40 more

Caused by:

java.util.MissingResourceException: Can't find resource for bundle
java.util.PropertyResourceBundle, key validator_phone
	at java.util.ResourceBundle.getObject(ResourceBundle.java:325)
	at java.util.ResourceBundle.getString(ResourceBundle.java:285)
	at org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.getLocalizedString(MessageUtils.java:34)
	at org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.createErrorMessage(MessageUtils.java:53)
	at org.apache.myfaces.tobago.example.addressbook.web.Controller.validatePhoneNumber(Controller.java:195)
	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:585)
	at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
	at javax.faces.component._ComponentUtils.callValidators(_ComponentUtils.java:181)
	at javax.faces.component.UIInput.validateValue(UIInput.java:313)
	at javax.faces.component.UIInput.validate(UIInput.java:354)
	at javax.faces.component.UIInput.processValidators(UIInput.java:184)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at org.apache.myfaces.tobago.component.UITabGroup.processValidators(UITabGroup.java:172)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at org.apache.myfaces.tobago.component.UIForm.processValidators(UIForm.java:71)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:149)
	at org.apache.myfaces.tobago.component.UIViewRoot.processValidators(UIViewRoot.java:175)
	at org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32)
	at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
	at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074)
	at org.apache.myfaces.tobago.webapp.TobagoMultipartFormdataFilter.doFilter(TobagoMultipartFormdataFilter.java:130)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)

Powered by Jetty://

Re: [TOBAGO] addressbook demo crashes on phone number validation

Posted by Arvid Hülsebus <ar...@atanion.com>.
Hello Mike,

We are currently in the process to overhaul the address book demo. We 
merged it with an older variant based on Faclets and added a DB back-end 
instead of the former file based implementation. I still have a list of 
about 20 issues we still have to fix.

But I didn't notice the missing resource up to now. This should be fixed 
now. Although the validator is very simplistic and the error message is 
pretty cryptic. You have to enter something like "+111 111 1111".

Thanks and best regards,
Arvid

Mike Kienenberger wrote:
> Just going through the Tobago addressbook demo.
>
> Grabbed it from svn, and then ran this command:
>
> C:\workspaces\myfaces\addressbook-1.0.10>mvn jetty:run-exploded
>
> I created a new address, and put in a phone number in this format
> 111-111-1111 and I got the following error (which is probably
> unrelated to the actual data input).
>
> Looks like the root cause is:
>
> java.util.MissingResourceException: Can't find resource for bundle
> java.util.PropertyResourceBundle, key validator_phone
>
> =========================
>
> HTTP ERROR: 500
>
> Exception while invoking expression #{controller.validatePhoneNumber}
>
> RequestURI=/tobago-example-addressbook/faces/editor.jsp
> Caused by:
>
> javax.faces.el.EvaluationException: Exception while invoking
> expression #{controller.validatePhoneNumber}
>     at 
> org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:156) 
>
>     at 
> javax.faces.component._ComponentUtils.callValidators(_ComponentUtils.java:181) 
>
>     at javax.faces.component.UIInput.validateValue(UIInput.java:313)
>     at javax.faces.component.UIInput.validate(UIInput.java:354)
>     at javax.faces.component.UIInput.processValidators(UIInput.java:184)
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> org.apache.myfaces.tobago.component.UITabGroup.processValidators(UITabGroup.java:172) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> org.apache.myfaces.tobago.component.UIForm.processValidators(UIForm.java:71) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:149)
>     at 
> org.apache.myfaces.tobago.component.UIViewRoot.processValidators(UIViewRoot.java:175) 
>
>     at 
> org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32) 
>
>     at 
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95) 
>
>     at 
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
>     at 
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
>     at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074) 
>
>     at 
> org.apache.myfaces.tobago.webapp.TobagoMultipartFormdataFilter.doFilter(TobagoMultipartFormdataFilter.java:130) 
>
>     at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065) 
>
>     at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
>     at 
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185) 
>
>     at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>     at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
>     at 
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
>     at 
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146) 
>
>     at 
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 
>
>     at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
>     at org.mortbay.jetty.Server.handle(Server.java:285)
>     at 
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
>     at 
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765) 
>
>     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
>     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
>     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
>     at 
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329) 
>
>     at 
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475) 
>
> Caused by: java.util.MissingResourceException: Can't find resource for
> bundle java.util.PropertyResourceBundle, key validator_phone
>     at java.util.ResourceBundle.getObject(ResourceBundle.java:325)
>     at java.util.ResourceBundle.getString(ResourceBundle.java:285)
>     at 
> org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.getLocalizedString(MessageUtils.java:34) 
>
>     at 
> org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.createErrorMessage(MessageUtils.java:53) 
>
>     at 
> org.apache.myfaces.tobago.example.addressbook.web.Controller.validatePhoneNumber(Controller.java:195) 
>
>     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:585)
>     at 
> org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132) 
>
>     ... 40 more
>
> Caused by:
>
> java.util.MissingResourceException: Can't find resource for bundle
> java.util.PropertyResourceBundle, key validator_phone
>     at java.util.ResourceBundle.getObject(ResourceBundle.java:325)
>     at java.util.ResourceBundle.getString(ResourceBundle.java:285)
>     at 
> org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.getLocalizedString(MessageUtils.java:34) 
>
>     at 
> org.apache.myfaces.tobago.example.addressbook.web.MessageUtils.createErrorMessage(MessageUtils.java:53) 
>
>     at 
> org.apache.myfaces.tobago.example.addressbook.web.Controller.validatePhoneNumber(Controller.java:195) 
>
>     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:585)
>     at 
> org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132) 
>
>     at 
> javax.faces.component._ComponentUtils.callValidators(_ComponentUtils.java:181) 
>
>     at javax.faces.component.UIInput.validateValue(UIInput.java:313)
>     at javax.faces.component.UIInput.validate(UIInput.java:354)
>     at javax.faces.component.UIInput.processValidators(UIInput.java:184)
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> org.apache.myfaces.tobago.component.UITabGroup.processValidators(UITabGroup.java:172) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> org.apache.myfaces.tobago.component.UIForm.processValidators(UIForm.java:71) 
>
>     at 
> javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:627) 
>
>     at 
> javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:149)
>     at 
> org.apache.myfaces.tobago.component.UIViewRoot.processValidators(UIViewRoot.java:175) 
>
>     at 
> org.apache.myfaces.lifecycle.ProcessValidationsExecutor.execute(ProcessValidationsExecutor.java:32) 
>
>     at 
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95) 
>
>     at 
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
>     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
>     at 
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
>     at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1074) 
>
>     at 
> org.apache.myfaces.tobago.webapp.TobagoMultipartFormdataFilter.doFilter(TobagoMultipartFormdataFilter.java:130) 
>
>     at 
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1065) 
>
>     at 
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
>     at 
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185) 
>
>     at 
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
>     at 
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
>     at 
> org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
>     at 
> org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:146) 
>
>     at 
> org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 
>
>     at 
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
>     at org.mortbay.jetty.Server.handle(Server.java:285)
>     at 
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
>     at 
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765) 
>
>     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
>     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
>     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
>     at 
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329) 
>
>     at 
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475) 
>
>
> Powered by Jetty://
>