我正在使用以下代码根据用户的需求生成outputPanel
。 我想根据用户的回复自定义outputPanel
内容。因此,我需要将参数从commandLink
传递到ouputPanel
。我怎么能这样做?
<h:form>
<p:commandLink value="Load" onclick="lazyload()" />
<p:remoteCommand name="lazyload" update="lazypanel">
<f:setPropertyActionListener value="#{true}" target="#{requestScope.shouldRender}"/>
</p:remoteCommand>
<p:outputPanel id="lazypanel">
<h:outputText value="This part is lazily loaded" rendered="#requestScope.shouldRender}"/>
</p:outputPanel>
</h:form>
答案 0 :(得分:0)
您可以像现在一样使用呈现的属性。问题是你想如何定制它。根据具体情况,有很多种方式。您可以执行一组具有值的值,这些值仅在其值为true时呈现。
即
<p:outputPanel rendered="#{bean.someBoolCheckCaseOne}" />
<p:outputPanel rendered="#{bean.someBoolCheckCaseTwo}" />
...
<p:outputPanel rendered="#{bean.someBoolCheckCaseThree}" />
或者如果您的范围更广,您可以使用
直接将HTML注入面板 <p:outputPanel ...>
<h:outputPanel escape="false" value="#{bean.htmlWithoutEscapes}" />
</p:outputPanel>
至于传递参数
<p:commandLink actionListener="#{bean.onClick}"...>
<f:attribute name="someParam" value="#{someValue}" /> <!-- you can get this from the component attribute map -->
</p:commandLink>
//Managed Bean
public void onClick(ActionEvent evt)
{
Object param = evt.getComponent().getAttributes().get("someParam");
}
真的,我认为这样做非常简单。显然你需要定义输入和输出。我建议在requestScope上使用bean,因为PrimeFaces 2.2.1在转换器中有一个空指针,用于几周后修复的文本。我不确定你为什么要在远程命令之后。它的使用是非常具体的,除非你需要这种特殊性(我怀疑你这样做),它只是增加了一些复杂性和地方出错的地方。
如果您想在requestScope中完成所有操作,您也可以这样做...我不会推荐它。
我将它用于搜索字符串等...
<h:inputText value="#{requestScope.searchString}" style="width:95%;"/>
<p:commandButton value="Search" actionListener="#{inventoryBean.wardrobe.searchViaParameters}" update="inventoryWardrobe:searchForm">
<f:attribute name="searchString" value="#{requestScope.searchString}"/>
</p:commandButton>
我希望有所帮助,它是一个强大的组成部分。