You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by Chris Biggs <ch...@aptus.co.uk> on 2008/10/07 13:55:49 UTC
Trinidad - custom PPR tag problem - not evaluating an #{...}
expression
Hi,
Hope you can help the headache this is giving me.....
Basically I am trying to write a custom PPR tag with Trinidad (1.2.9). My tag though displays #{topteaser.currentText} while an outputTag tag using PPR in an identical way is working just fine. I guess I am missing some configuration option as I have tracked through the code and got to a line which goes getValue(bean) which for my tag returns "#{topteaser.currentText}" and for the outputText returns "start", "hello", "goodbye" as I want. As I see it (and I may be wrong) it is not the actual PPR (configuration) that is wrong but the fact that my tag has not correctly intepreted #{topteaser.currentText} as being an expression rather than just a chunk of text.
I have reduced by Tag to something quite simple - which simply extends CoreOutputText (and CoreOutputTextTag). I have specified virtually nothing in the code as you can see below.
package org.cage.myfaces.tags.teaser;
import org.apache.myfaces.trinidad.component.core.output.CoreOutputText;
public class UITeaser extends CoreOutputText {
public UITeaser() {
super();
}
/**
* Construct an instance of the CoreOutputText.
*/
protected UITeaser(String rendererType) {
super(rendererType);
}
}
and
package org.cage.myfaces.tags.teaser;
import org.apache.myfaces.trinidadinternal.taglib.core.output.CoreOutputTextTag;
public class TeaserTag extends CoreOutputTextTag {
public TeaserTag()
{
}
}
In the WEB_INF/teaser.tld, I have
<?xml version="1.0" encoding="UTF-8"?>
<taglib 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/web-jsptaglibrary_2_1.xsd"
version="2.1"
>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>teaser</short-name>
<uri>http://www.promt.me.uk/development/JSF
</uri>
<description>...</description>
<tag>
<description>The outputText component supports styled text.
</description>
<name>teaser</name>
<tag-class>......
The rest of the <tag>...<tag> is copied straight from the outputText <tag>...</tag> definition from Trinidad
In the JSP I have
...
<%@ taglib uri="http://www.promt.me.uk/development/JSF" prefix="cage" %>
...
<tr:poll id="myPoller" interval="1000" pollListener="#{topteaser.doSomething}"></tr:poll>
<cage:teaser value="#{topteaser.currentText}" partialTriggers="myPoller"/>
<tr:outputText value="#{topteaser.currentText}" partialTriggers="myPoller"/>
"topteaser" is defined as.....
<managed-bean>
<managed-bean-name>topteaser</managed-bean-name>
<managed-bean-class>org.cage.myfaces.teasers.beans.TopTeaser
</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
and contains the code....
package org.cage.myfaces.teasers.beans;
import org.apache.myfaces.trinidad.event.PollEvent;
public class TopTeaser {
private String[] text = new String[] {"hello", "goodbye"};
public String currentText = "start";
/**
* default empty constructor
*/
public TopTeaser(){
}
public String getCurrentText() {
return currentText;
}
public void setCurrentText(String currentText) {
this.currentText = currentText;
}
public void doSomething(PollEvent event)
{
currentText = text[Integer.parseInt(Long.toString(System.currentTimeMillis()%2))];
}
}
How simple can you get?
Any pointers would be gratefully received.
Thanks & Regards
Christopher Biggs