我怎样才能找到另一种形式或形式外部的组件,但是在同一个标​​签中

时间:2013-07-29 14:47:30

标签: java java-ee primefaces datatable components

我发现是否设置了带有行编辑器模式的数据表的表单,并且有输入验证器。更多,一个带有验证器的输入组件的网格。所以我找不到表格中的网格。如果我设置两个表单,我找不到每个表单中的每个其他组件。我找到组件:formid:compentid。我只想用删除按钮编辑foodcategoryform并使用update foodcategoryform添加类别。但它不能... primefaces.thank u。

   <p:tab title="食品分类" id="foodtab">
                            <h:form id="foodcategoryform">
                                <f:facet name="header">  
                                </f:facet>  
                                <p:dataTable id="categorytable" var="foodcategories" 
                                             value="#{foodManagerController.foodCategories}" 
                                             editable="true"  
                                             paginator="true"
                                             paginatorPosition="bottom"
                                             paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                             rowsPerPageTemplate="5,10,15" rows="5"
                                             paginatorAlwaysVisible="false"
                                             emptyMessage="当前系统没有分类数据"
                                             editMode="row"
                                             resizableColumns="true"
                                             >  
                                    <p:ajax event="rowEdit" update="@this" listener="#{foodManagerController.updateFoodCategory}" />
                                    <p:column headerText="名称" style="width:25%">  
                                        <p:growl id="categorymsg"></p:growl>
                                        <p:cellEditor>  
                                            <f:facet name="output"><h:outputText value="#{foodcategories.typeName}" /></f:facet>  
                                            <f:facet name="input">
                                                <p:inputText value="#{foodcategories.typeName}" >
                                                    <f:validator validatorId="foodCateIsExistValidator"  />
                                                    <f:attribute  name="objectid" value="#{foodcategories.id}"></f:attribute>
                                                    <p:ajax update="categorymsg" event="keyup" />
                                                </p:inputText>
                                            </f:facet>  
                                        </p:cellEditor>  
                                    </p:column>  
                                    <p:column headerText="描述" style="width:25%">  
                                        <p:cellEditor>  
                                            <f:facet name="output"><h:outputText value="#{foodcategories.typeDesc}" /></f:facet>  
                                            <f:facet name="input"><p:inputText value="#{foodcategories.typeDesc}" ><f:validateRequired/></p:inputText></f:facet>  
                                        </p:cellEditor>  
                                    </p:column>
                                    <p:column style="width:6%" headerText="修改">  
                                        <p:rowEditor />  
                                    </p:column>
                                    <p:column style="width:6%" headerText="删除">  
                                        <f:facet name="header">
                                            <h:outputText value="删除" />
                                        </f:facet>
                                        <p:commandButton id="deletebutton" update="categorytable"  icon="ui-icon-close" title="删除" actionListener="#{foodManagerController.deletedFoodCatery(foodcategories)}" ajax="true">  
                                        </p:commandButton>  
                                    </p:column>
                                </p:dataTable>
                                <p:panel header="新加种类"   toggleable="true" toggleSpeed="500"  id="addcategorypanel" >  
                                    <p:growl id="addcategorymsg" showDetail="true"   life="3000" autoUpdate="true"/>  
                                    <p:outputLabel for="typename" value="种类名称" >
                                    </p:outputLabel>
                                    <p:inputText id="typename"    value="#{foodManagerController.foodCateName}" >
                                        <f:validateRequired/>
                                        <f:validator validatorId="foodCateIsExistValidator"  />
                                        <p:ajax update="addcategorymsg" event="keyup"/>
                                    </p:inputText>
                                    <p:outputLabel for="typedesc" value="种类描述"></p:outputLabel>
                                    <p:inputText id="typedesc" required="true" requiredMessage="请添加描述"  value="#{foodManagerController.foodCateDesc}">
                                        <f:validateRequired/>
                                        <p:ajax update="addcategorymsg" event="keyup" />
                                    </p:inputText>
                                    <p:commandButton id="addacate"  update="addcategorymsg,categorytable" value="添加"  actionListener="#{foodManagerController.addFoodCatery}" ajax="true"/>  
                                </p:panel>
                            </h:form>
                        </p:tab>

1 个答案:

答案 0 :(得分:0)

Primefaces有一个整洁的小实用程序函数,它遍历整个视图(从根目录)查找给定的ID,然后返回JSF客户端ID:

p:component('compentid')

它可以像这样使用(不要忘记前面的':'):

<p:commandButton ... update=":#{p:component('compentid')}" />

这有效地允许您通过其ID获取视图中的任何组件。你甚至不需要知道它的形式。