JSF 1.2 Custom Component - Body Content From Backing Bean
-
21-08-2019 - |
Question
I am developing a custom component using JSF 1.2. My tag class extends UIComponentELTag
and has variables of type ValueExpression
. The values for these are getting set from the corresponding attributes of the tag (using setProperties
function), for example
<sr:show name="#{backingBean.name}" ...> #{backingBean.mainContent}</sr:show>
I am stuck when I try to get the bodyContent of the tag as a binding value. This is how far I have proceeded:
public int doAfterBody() throws JspException{
if(bodyContent!=null) {
String body = bodyContent.getString();
FacesContext context = FacesContext.getCurrentInstance();
UIComponent component = super.findComponent(context);
MyComp myComp= (MyComp) component;
myComp.setMain(body);
}
bodyContent.clearBody();
return SKIP_BODY;
}
If the body of the tag does not contain binding value, this code works fine. I want to check if the body has binding value and then set the value from the bean.
In JSF 1.1, I checked this using isValueReference(body)
. How do I achieve this in JSF 1.2? I could not find any examples of getting the body content as binding value anywhere.
Solution
Why not simply add another variable e.g. "contents" and bind that to the body text you want to render?
<sr:show name="#{backingBean.name}" text="#{backingBean.mainContent}" />
Or simply:
<sr:show bean="#{backingBean} />
and render the whole lot.