如何将参数从commandLink传递到outputPanel以自定义outputPanel内容



我使用以下代码根据用户需求生成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>  

您可以像现在这样使用渲染属性。问题是你想如何定制它。根据情况有很多方法。您可以逐个执行一组值,这些值只有在值为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>

我希望这会有所帮助,它是一个强大的组成部分。

相关内容

  • 没有找到相关文章

最新更新