相关疑难解决方法(0)

了解PrimeFaces进程/更新和JSF f:ajax执行/呈现属性

究竟是什么process,并update在PrimeFaces p:commandXxx组件和executerenderf:ajax标签?

哪个在验证时有效?什么是update属性做,而不是更新的值从后端组件?不要process属性绑定值模型?究竟是什么@this,@parent,@all@form在这两个属性?

下面的例子工作正常,但我对基本概念有点困惑.

<p:commandButton process="@parent"
                 update="@form"
                 action="#{bean.submit}" 
                 value="Submit" />
Run Code Online (Sandbox Code Playgroud)

jsf process updates primefaces

181
推荐指数
4
解决办法
22万
查看次数

如何找到ajax update/render组件的客户端ID?找不到带有"bar"引用的表达式"foo"的组件

下面的代码是从PrimeFaces的DataGrid + DataTable的教程启发和放入<p:tab>一个的<p:tabView>居住在<p:layoutUnit><p:layout>.这是代码的内部部分(从p:tab组件开始); 外部是微不足道的.

<p:tabView id="tabs">
    <p:tab id="search" title="Search">                        
        <h:form id="insTable">
            <p:dataTable id="table" var="lndInstrument" value="#{instrumentBean.instruments}">
                <p:column>
                    <p:commandLink id="select" update="insTable:display" oncomplete="dlg.show()">
                        <f:setPropertyActionListener value="#{lndInstrument}" 
                                        target="#{instrumentBean.selectedInstrument}" />
                        <h:outputText value="#{lndInstrument.name}" />
                    </p:commandLink>                                    
                </p:column>
            </p:dataTable>
            <p:dialog id="dlg" modal="true" widgetVar="dlg">
                <h:panelGrid id="display">
                    <h:outputText value="Name:" />
                    <h:outputText value="#{instrumentBean.selectedInstrument.name}" />
                </h:panelGrid>
            </p:dialog>                            
        </h:form>
    </p:tab>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)

当我单击时<p:commandLink>,代码停止工作并给出消息:

找不到表达式为"insTable:display"的组件,引用自"tabs:insTable:select".

当我尝试相同的使用时<f:ajax>,它失败了,基本上告诉相同的不同消息:

<f:ajax> 包含一个未知的id"insTable:display"无法在组件"tabs:insTable:select"的上下文中找到它

这是怎么造成的,我该如何解决?

ajax jsf clientid primefaces jsf-2

131
推荐指数
3
解决办法
15万
查看次数

当我想要ajax-update时,为什么我需要在另一个组件中嵌入一个带有render ="#{some}"的组件?

所以我找到了一些接近这个的答案,我发现足以解决我遇到的问题.但即使这样,我也很好奇了解这方面的运作方式.让我用一个例子来说明:

我有一个.xhtml看起来像这样(缩短)的facelet 页面.

<h:form id="resultForm">

    <h:panelGroup class="search_form" layout="block">
        <h:inputText id="lastname" value="#{search.lastname}"/>
        <h:commandButton action="#{search.find}" value="Find">
            <f:ajax execute="lastname" render="resultDisplay"/>
        </h:commandButton>
    </h:panelGroup>

    <h:dataTable value="#{search.searchResults}" var="results" id="resultDisplay"
            rendered="#{!empty search.searchResults}">  
        <h:column>
            #{results.field}
        </h:column>
    </h:dataTable>

</h:form>
Run Code Online (Sandbox Code Playgroud)

现在,为了突破性,我不会发布所有的支持bean代码,但我有这样的东西:

public void find() {
    searchResults = setResults(true);
}
Run Code Online (Sandbox Code Playgroud)

哪里searchResultsArrayList<Objects>.在搜索之后,它不是null - 在多个测试中检查(可以为null,但不在我正在进行的测试中).

现在.这不起作用.

但是,如果我将dataTable内部嵌套在另一个内部panelGroup,那么它会起作用.

<h:panelGroup id="resultDisplay">
    <h:dataTable value="#{search.searchResults}" var="results"
        rendered="#{!empty search.searchResults}">  
        <h:column>
            #{results.field}
        </h:column>
    </h:dataTable>
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

现在,这种变化可以让一切正常.我对此感到满意......但我想我也在寻求一些理解.有关为什么我必须嵌套这些组件的任何见解?我肯定错过了一些东西!

jsf facelets jsf-2 conditional-rendering ajax-update

32
推荐指数
1
解决办法
2万
查看次数

如何在父组件的ajax更新中排除子组件?

<p:ajax>在我的代码中使用PrimeFaces 标记.我们如何排除子组件在更新父组件的ajax调用中更新?

ajax jsf primefaces

21
推荐指数
1
解决办法
2万
查看次数

什么是<f:ajax execute ="@ all">真的应该做什么?它只发布封闭表单

对不起,如果我很厚,但f:ajax标签中的execute ="@ all"真的应该做什么?我希望它提交页面上的所有元素,但它似乎只发布封闭形式的值,而不是页面上的所有表单.

例如

<h:body>
    <h:form id="form1">
        Input1/Form1 <h:inputText id="testinput" value="#{testBean.input1}" />                              
    </h:form>

    <h:form id="form2">
        Input2/form2 <h:inputText id="testinput2" value="#{testBean.input2}" />                             
        <h:commandButton value="Ok" actionListener="#{testBean.al}">
        <f:ajax execute="@all" />
        </h:commandButton>
    </h:form>
</h:body>
Run Code Online (Sandbox Code Playgroud)

单击时仅发布form2.

使用mojarra 2.0.2 ..

ajax jsf-2

9
推荐指数
2
解决办法
3万
查看次数

有没有办法更新PrimeFaces数据表而不更新表头?

这是一个笨拙的问题!:)

这可能以某种方式成为可能吗?可以<p:dataTable>(无论是延迟加载还是其他方式)更新而不更新其标题(表格中的内容(行)以及页脚应该更新而不更新表格标题)?

更新<p:dataTable>可以由任何UICommand类似的触发<p:commandButton>,<p:commandLink>等等.

像这样的事情可以可视化,当我们编辑/更新使用行<p:cellEditor>与结合<p:rowEditor/><p:dataTable>(不知道单细胞编辑).

<p:dataTable id="dataTable" var="row" value="#{bean}" ...>
    <p:column headerText="Header 1" sortBy="#{row.property1}" filterBy="#{row.property1}">
        ....
    </p:column>
    <p:column>
        <!--They may be our own headers-->
        <f:facet name="header">
            Header 2
            ...
        </f:facet>
        ....
    </p:column>
    ...
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

datatable jsf primefaces jsf-2.2

4
推荐指数
1
解决办法
4883
查看次数

Primefaces仅更新选定的选项卡

我有一种情况,我想在触发"选择"事件时更新页面上的多个组件. 但是,其中两个位置位于tabView中,我只想更新这些组件,如果它们位于当前选定的选项卡中.我怀疑我正在寻找的是这样的......

<p:ajax event="select" 
        update="@(<don't know what to put here> .ui-tabs-selected)" 
        listener="#{treeSelectionView.onNodeSelect}" />
Run Code Online (Sandbox Code Playgroud)

但我不确定.

我尝试的另一种策略是使tabView dynamic ="true",但是当我从p:ajax标记调用更新时,即使未选中选项卡,它也会拉取数据.:(

我是Primefaces的新手,并且喜欢到目前为止我所见过的东西.这似乎不应该太难,但我不知何故错过了这个标记.此外,我很难找到有助于我的文档或示例.希望我只是在错误的地方寻找.:)

提前致谢.

jquery jsf primefaces

3
推荐指数
1
解决办法
5155
查看次数