This is really weird. Somehow Tapestry thinks that the actionlink is referring to a component placed
on another page than the one that is rendering. And since it thinks the containing page is the index
page, it converts the page name to the empty string "" which is not allowed as a value for a paramater.
I'm confused.
Uli
Am 15.10.2009 11:25 schrieb Borut Bolčina:
Here it is (also in attachment, if it gets through)
An unexpected application exception has occurred.
* org.apache.tapestry5.internal.services.RenderQueueException
Render queue error in BeginRender[Index:logout]: Parameter value
was null or contained only whitespace.
activeComponents
o Verify (class si.najdi.rp.pages.Verify)
o Index (class si.najdi.rp.pages.Index)
o Index:layout (class si.najdi.rp.components.Layout)
context:Index.tml, line 1
1 <html t:type="layout" title="OpenID Relaying Party"
2 t:sidebarTitle="OpenID response"
3
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
4 xmlns:p="tapestry:parameter">
5
6 <p>${message:greeting}</p>
o Index:if (class org.apache.tapestry5.corelib.components.If)
context:Index.tml, line 8
3
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
4 xmlns:p="tapestry:parameter">
5
6 <p>${message:greeting}</p>
7
8 <t:if test="user">
9 Welcome, ${user.firstName} | <t:actionlink
t:id="logout">logout</t:actionlink>
10 <p:else>
11 <t:form>
12 <t:errors />
13 <t:label for="openid"/>:
o Index:logout (class
org.apache.tapestry5.corelib.components.ActionLink)
context:Index.tml, line 9
4 xmlns:p="tapestry:parameter">
5
6 <p>${message:greeting}</p>
7
8 <t:if test="user">
9 Welcome, ${user.firstName} | <t:actionlink
t:id="logout">logout</t:actionlink>
10 <p:else>
11 <t:form>
12 <t:errors />
13 <t:label for="openid"/>:
14 <t:textfield t:id="openid" value="openid" size="30"/>
location
context:Index.tml, line 9
* java.lang.IllegalArgumentException
Parameter value was null or contained only whitespace.
Hide uninteresting stack frames Stack trace
o
org.apache.tapestry5.ioc.internal.util.Defense.notBlank(Defense.java:59)
o
org.apache.tapestry5.internal.services.LinkImpl.addParameter(LinkImpl.java:55)
o
org.apache.tapestry5.internal.services.ComponentEventLinkEncoderImpl.createComponentEventLink(ComponentEventLinkEncoderImpl.java:212)
o
$ComponentEventLinkEncoder_124571f880c.createComponentEventLink($ComponentEventLinkEncoder_124571f880c.java)
o
org.apache.tapestry5.internal.services.LinkSourceImpl.createComponentEventLink(LinkSourceImpl.java:79)
o
$LinkSource_124571f881c.createComponentEventLink($LinkSource_124571f881c.java)
o
org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.createComponentEventLink(ComponentPageElementResourcesImpl.java:94)
o
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.createEventLink(ComponentPageElementImpl.java:1204)
o
org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.createEventLink(InternalComponentResourcesImpl.java:173)
o
org.apache.tapestry5.corelib.components.ActionLink.createLink(ActionLink.java:36)
o
org.apache.tapestry5.corelib.base.AbstractComponentEventLink.beginRender(AbstractComponentEventLink.java:57)
o
org.apache.tapestry5.corelib.base.AbstractComponentEventLink.beginRender(AbstractComponentEventLink.java)
o
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.invokeComponent(ComponentPageElementImpl.java:206)
o
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
o
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:933)
o
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
o
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
o
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeginRenderPhase.render(ComponentPageElementImpl.java:211)
o
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
o
org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
o
$PageRenderQueue_124571f887b.render($PageRenderQueue_124571f887b.java)
o
$PageRenderQueue_124571f8872.render($PageRenderQueue_124571f8872.java)
o
org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
o
org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
o
$MarkupRenderer_124571f887d.renderMarkup($MarkupRenderer_124571f887d.java)
o
org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
o
$MarkupRenderer_124571f887d.renderMarkup($MarkupRenderer_124571f887d.java)
o
org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
o
$MarkupRenderer_124571f887d.renderMarkup($MarkupRenderer_124571f887d.java)
o
org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
o
$MarkupRenderer_124571f887d.renderMarkup($MarkupRenderer_124571f887d.java)
o
org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
o
$MarkupRenderer_124571f887d.renderMarkup($MarkupRenderer_124571f887d.java)
o
org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
o
$MarkupRenderer_124571f887d.renderMarkup($MarkupRenderer_124571f887d.java)
o
$MarkupRenderer_124571f887a.renderMarkup($MarkupRenderer_124571f887a.java)
o
org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
o
$PageMarkupRenderer_124571f8877.renderPageMarkup($PageMarkupRenderer_124571f8877.java)
o
org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
o
$PageResponseRenderer_124571f881a.renderPageResponse($PageResponseRenderer_124571f881a.java)
o
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
o
org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943)
o
$PageRenderRequestHandler_124571f881b.handle($PageRenderRequestHandler_124571f881b.java)
o
$PageRenderRequestHandler_124571f8806.handle($PageRenderRequestHandler_124571f8806.java)
o
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
o
$ComponentRequestHandler_124571f880b.handlePageRender($ComponentRequestHandler_124571f880b.java)
o
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
o $Dispatcher_124571f880d.dispatch($Dispatcher_124571f880d.java)
o $Dispatcher_124571f8804.dispatch($Dispatcher_124571f8804.java)
o
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245)
o si.najdi.rp.services.AppModule$1.service(AppModule.java:85)
o
$RequestFilter_124571f8803.service($RequestFilter_124571f8803.java)
o
$RequestHandler_124571f8805.service($RequestHandler_124571f8805.java)
o
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
o
$RequestHandler_124571f8805.service($RequestHandler_124571f8805.java)
o
org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778)
o
$RequestHandler_124571f8805.service($RequestHandler_124571f8805.java)
o
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767)
o
$RequestHandler_124571f8805.service($RequestHandler_124571f8805.java)
o
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
o
$RequestHandler_124571f8805.service($RequestHandler_124571f8805.java)
o
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
o
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
o
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
o
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
o
$RequestHandler_124571f8805.service($RequestHandler_124571f8805.java)
o
$RequestHandler_124571f87fa.service($RequestHandler_124571f87fa.java)
o
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197)
o
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
o
$HttpServletRequestHandler_124571f87fc.service($HttpServletRequestHandler_124571f87fc.java)
o
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
o
$HttpServletRequestFilter_124571f87f9.service($HttpServletRequestFilter_124571f87f9.java)
o
$HttpServletRequestHandler_124571f87fc.service($HttpServletRequestHandler_124571f87fc.java)
o
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726)
o
$HttpServletRequestHandler_124571f87fc.service($HttpServletRequestHandler_124571f87fc.java)
o
$HttpServletRequestHandler_124571f87f7.service($HttpServletRequestHandler_124571f87f7.java)
o
org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
o
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
o
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
o
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
o
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
o
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
o
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
o
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
o
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
o
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
o org.mortbay.jetty.Server.handle(Server.java:324)
o
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
o
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
o org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
o org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
o org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
o
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
o
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)
Tapestry Framework
Tapestry Version
5.1.0.5
Application Version
0.0.1-SNAPSHOT
Request
Context Path
/rp
Request Path
/verify
Locale
en
Secure
false
Server Name
localhost
Query Parameters
openid.assoc_handle
{HMAC-SHA256}{4ad6d0de}{Fn667Q==}
openid.claimed_id
http://bbcooper.myopenid.com/
openid.identity
http://bbcooper.myopenid.com/
openid.mode
id_res
openid.ns
http://specs.openid.net/auth/2.0
openid.op_endpoint
http://www.myopenid.com/server
openid.response_nonce
2009-10-15T07:36:03ZNu83q5
openid.return_to
http://localhost:8080/rp/verify
openid.sig
mkrk4xlUWLvp+/w2lzREKJEFtAkucBmZpf1/JYDgpJs=
openid.signed
assoc_handle,claimed_id,identity,mode,ns,op_endpoint,response_nonce,return_to,signed
Headers
Accept
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset
UTF-8,*
Accept-Encoding
gzip,deflate
Accept-Language
en,sl;q=0.8,en-gb;q=0.6,en-us;q=0.4,sr;q=0.2
Connection
keep-alive
Cookie
blackbird={"pos": 1, "size": 0, "load": null};
JSESSIONID=1iyhl74ngdgjq; JSESSIONID=1a7ay6gx36q9f;
blackbird={"pos": 1, "size": 0, "load": null}; poll=;
chkcookie=1255422702042;
MAdUTCID=%220470de48.10.2.3.66.1234567101836%22; BOOKMARK_CHANGED=true
Host
localhost:8080
Keep-Alive
300
User-Agent
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.1.3)
Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Context Attributes
com.sun.jsp.tagFileJarUrlsCache
{}
com.sun.jsp.taglibraryCache
{}
javax.servlet.context.tempdir
C:\workarea\identity-client\target\work
org.apache.tapestry5.application-registry
org.apache.tapestry5.ioc.internal.registrywrap...@112b1dd
Session
sso:si.najdi.rp.User
si.najdi.rp.u...@1a7dd7b
sso:si.najdi.rp.Visit
si.najdi.rp.vi...@5b3e5d
System Properties
awt.toolkit
sun.awt.windows.WToolkit
classworlds.conf
C:\workarea\.metadata\.plugins\org.maven.ide.eclipse\launches\m2conf1646642092209224567.tmp
file.encoding
UTF-8
file.encoding.pkg
sun.io <http://sun.io>
file.separator
\
java.awt.graphicsenv
sun.awt.Win32GraphicsEnvironment
java.awt.printerjob
sun.awt.windows.WPrinterJob
java.class.path
C:\maven-current\boot\classworlds-1.1.jar
java.class.version
50.0
java.endorsed.dirs
C:\Java\jdk1.6.0_16\jre\lib\endorsed
java.ext.dirs
C:\Java\jdk1.6.0_16\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
java.home
C:\Java\jdk1.6.0_16\jre
java.io.tmpdir
C:\DOCUME~1\borutb\LOCALS~1\Temp\
java.library.path
* C:\Java\jdk1.6.0_16\bin
* .
* C:\WINDOWS\Sun\Java\bin
* C:\WINDOWS\system32
* C:\WINDOWS
* C:/Program Files/Java/jre6/bin/client
* C:/Program Files/Java/jre6/bin
* C:\Program Files\PHP\
* C:\WINDOWS\system32
* C:\WINDOWS
* C:\WINDOWS\System32\Wbem
* C:\Program Files\ATI Technologies\ATI.ACE\Core-Static
* C:\Program Files\Windows Imaging\
* C:\Program Files\MySQL\MySQL Server 5.0\bin
* C:\Program Files\ZipGenius 6\
* C:\Program Files\QuickTime\QTSystem\
* C:\Program Files\TortoiseSVN\bin
* C:\WINDOWS\system32\WindowsPowerShell\v1.0
* C:\Program Files\CollabNet Subversion Client
* C:\Java\jdk1.6.0_16\bin
* C:\maven-current\bin
* C:\UnxUtils\bin
* C:\UnxUtils\usr\local\wbin
* C:\Program Files\IDM Computer Solutions\UltraCompare\
* C:\Program Files\Notepad++
java.runtime.name <http://java.runtime.name>
Java(TM) SE Runtime Environment
java.runtime.version
1.6.0_16-b01
java.specification.name <http://java.specification.name>
Java Platform API Specification
java.specification.vendor
Sun Microsystems Inc.
java.specification.version
1.6
java.vendor
Sun Microsystems Inc.
java.vendor.url
http://java.sun.com/
java.vendor.url.bug
http://java.sun.com/cgi-bin/bugreport.cgi
java.version
1.6.0_16
java.vm.info <http://java.vm.info>
mixed mode, sharing
java.vm.name <http://java.vm.name>
Java HotSpot(TM) Client VM
java.vm.specification.name <http://java.vm.specification.name>
Java Virtual Machine Specification
java.vm.specification.vendor
Sun Microsystems Inc.
java.vm.specification.version
1.0
java.vm.vendor
Sun Microsystems Inc.
java.vm.version
14.2-b01
line.separator
maven.home
C:\maven-current
os.arch
x86
os.name <http://os.name>
Windows XP
os.version
5.1
path.separator
;
sun.arch.data.model
32
sun.boot.class.path
* C:\Java\jdk1.6.0_16\jre\lib\resources.jar
* C:\Java\jdk1.6.0_16\jre\lib\rt.jar
* C:\Java\jdk1.6.0_16\jre\lib\sunrsasign.jar
* C:\Java\jdk1.6.0_16\jre\lib\jsse.jar
* C:\Java\jdk1.6.0_16\jre\lib\jce.jar
* C:\Java\jdk1.6.0_16\jre\lib\charsets.jar
* C:\Java\jdk1.6.0_16\jre\classes
sun.boot.library.path
C:\Java\jdk1.6.0_16\jre\bin
sun.cpu.endian
little
sun.cpu.isalist
pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
sun.desktop
windows
sun.io.unicode.encoding
UnicodeLittle
sun.java.launcher
SUN_STANDARD
sun.jnu.encoding
Cp1250
sun.management.compiler
HotSpot Client Compiler
sun.os.patch.level
Service Pack 3
user.country
SI
user.dir
C:\workarea\identity-client
user.home
C:\Documents and Settings\borutb
user.language
sl
user.name <http://user.name>
borutb
user.timezone
Europe/Prague
user.variant
2009/10/15 Ulrich Stärk <u...@spielviel.de <mailto:u...@spielviel.de>>
On first look I can't see what's wrong here. Could you please post
exactly where this happens (the error report should give you the
name of the component that is in error and a line number inside your
template).
Uli
Am 15.10.2009 09:49 schrieb Borut Bolčina:
Hello,
I am having difficulties understand why the followinf piece of
code gives me
the error "Parameter value was null or contained only
whitespace". If I
remove <t:actionlink> from the <t:if> or replace it with for example
<t:pagelink>, then the error does not appear. If I move
<t:actionlink>
outside <t:if> it works also, but I need to have <t:actionlink>
in <t:if>
obviously.
Please advise.
Index.tml
===============================================
<html t:type="layout" title="OpenID Relaying Party"
t:sidebarTitle="OpenID response"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
xmlns:p="tapestry:parameter">
<p>${message:greeting}</p>
<t:if test="user">
Welcome, ${user.firstName} | <t:actionlink
t:id="logout">logout</t:actionlink>
<p:else>
<t:form>
<t:errors />
<t:label for="openid"/>:
<t:textfield t:id="openid" value="openid" size="30"/>
<t:submit t:id="login" value="Login"/>
</t:form>
</p:else>
</t:if>
<p:sidebar>
<p>${message}</p>
</p:sidebar>
</html>
Index.java
=================================================
public class Index {
@Inject
private Logger logger;
@Inject
private Request request;
@Property
@Persist(PersistenceConstants.FLASH)
private String openid;
@Inject
private Consumer consumer;
@SessionState
private Visit visit;
@SessionState(create = false)
@Property
private User user;
private boolean userExists;
private String message;
@Log
void onValidateFromOpenid(String openidurl) throws
ValidationException {
try {
URL url = new URL(openidurl);
} catch (MalformedURLException e) {
throw new ValidationException("Nepravilen URL!");
}
}
@Log
URL onSuccess() throws DiscoveryException, MessageException,
ConsumerException, MalformedURLException {
ConsumerManager manager = consumer.getManager();
// perform discovery on the user-supplied identifier
List discoveries = manager.discover(openid);
// attempt to associate with the OpenID provider
// and retrieve one service endpoint for authentication
DiscoveryInformation discovered =
manager.associate(discoveries);
// store the discovery information in the user's session
for later
use
// leave out for stateless operation / if there is no session
visit.setDiscoveryInformation(discovered);
// obtain a AuthRequest message to be sent to the OpenID
provider
AuthRequest authReq = manager.authenticate(discovered, "
http://localhost:8080/rp/verify");
// Redirect the User to Their OpenID Provider
return new URL(authReq.getDestinationUrl(true));
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return this.message;
}
@Log
void onActionFromLogout() {
Session s = request.getSession(false);
if (s != null) {
s.invalidate();
}
}
}
I get to this page from Verify page which is called by some
openid server (
myopenid.com <http://myopenid.com> for example)
Verify.java
==============================================
public class Verify {
@Inject
private Logger logger;
@Inject
private Consumer consumer;
@Inject
private RequestGlobals requestGlobals;
@SessionState
private Visit visit;
@SessionState(create = false)
private User user;
private boolean userExists;
@InjectPage
private Index indexPage;
@Log
Object setupRender() throws MessageException, DiscoveryException,
AssociationException {
// extract the parameters from the authentication response
// (which comes in as a HTTP request from the OpenID
provider)
HttpServletRequest httpServletRequest =
requestGlobals.getHTTPServletRequest();
ParameterList openidResp = new
ParameterList(httpServletRequest.getParameterMap());
// retrieve the previously stored discovery information
DiscoveryInformation discovered =
visit.getDiscoveryInformation();
// extract the receiving URL from the HTTP request
StringBuffer receivingURL =
httpServletRequest.getRequestURL();
String queryString = httpServletRequest.getQueryString();
if (queryString != null && queryString.length() > 0) {
receivingURL.append("?").append(httpServletRequest.getQueryString());
}
// verify the response
ConsumerManager manager = consumer.getManager();
VerificationResult verification =
manager.verify(receivingURL.toString(), openidResp, discovered);
// examine the verification result and extract the verified
identifier
Identifier verified = verification.getVerifiedId();
if (verified != null) {
// success, use the verified identifier to identify
the user
logger.info <http://logger.info>("Success");
user = new User();
user.setFirstName((String)
verification.getAuthResponse().getParameterMap().get("openid.identity"));
indexPage.setMessage("Success");
} else {
// OpenID authentication failed
logger.info <http://logger.info>("OpenID
authentication failed");
indexPage.setMessage("Failed");
}
return indexPage;
}
}
Cheers,
Borut
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
<mailto:users-unsubscr...@tapestry.apache.org>
For additional commands, e-mail: users-h...@tapestry.apache.org
<mailto:users-h...@tapestry.apache.org>
------------------------------------------------------------------------
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org