JSF 1.2自定义组件 - 来自Backing Bean的正文内容

时间:2009-03-21 06:29:02

标签: java jsf java-ee custom-component

我正在使用JSF 1.2开发自定义组件。我的标记类扩展了UIComponentELTag,并且包含ValueExpression类型的变量。这些值是根据标记的相应属性设置的(使用setProperties函数),例如

<sr:show name="#{backingBean.name}" ...> #{backingBean.mainContent}</sr:show>

当我尝试将标记的bodyContent作为绑定值时,我陷入困境。 这是我走了多远:

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;
}

如果标记的主体不包含绑定值,则此代码可以正常工作。我想检查主体是否具有绑定值,然后设置bean的值。

在JSF 1.1中,我使用isValueReference(body)进行了检查。我如何在JSF 1.2中实现这一目标?我找不到任何将身体内容作为绑定值在任何地方的例子。

1 个答案:

答案 0 :(得分:1)

为什么不简单地添加另一个变量,例如“contents”并将其绑定到要渲染的正文文本?

<sr:show name="#{backingBean.name}" text="#{backingBean.mainContent}" />

或者简单地说:

<sr:show bean="#{backingBean} />

并渲染整个。