Primefaces 如何使用按钮或命令按钮折叠primesfaces数据表?
我想通过单击primefaces数据表的命令按钮来显示或隐藏它们,我有一个java bean,可以调用java函数dashboardView.displayOrHide()。我不知道该怎么做 我想显示或隐藏datatable,或者通过单击按钮来折叠它,并将datatable的状态保存在JavaBean中 我的Primefaces版本是6.0.15 我的JSF/xhtml代码:Primefaces 如何使用按钮或命令按钮折叠primesfaces数据表?,primefaces,datatable,commandbutton,Primefaces,Datatable,Commandbutton,我想通过单击primefaces数据表的命令按钮来显示或隐藏它们,我有一个java bean,可以调用java函数dashboardView.displayOrHide()。我不知道该怎么做 我想显示或隐藏datatable,或者通过单击按钮来折叠它,并将datatable的状态保存在JavaBean中 我的Primefaces版本是6.0.15 我的JSF/xhtml代码: <p:commandButton value="Show Or Hide" id="ajax" action="#
<p:commandButton value="Show Or Hide" id="ajax" action="#{dashboardView.displayOrHide}" style="margin-right:20px;" styleClass="ui-priority-primary" />
<p:dataTable id="item_#{synopticLocationBean.id}" var="synopticIdBean" value="#{synopticLocationBean.synopticIdBeans}">
<p:column headerText="Famille">
<h:outputText value="#{synopticIdBean.family}" />
</p:column>
<p:column headerText="BT">
<h:outputText value="#{synopticIdBean.brNumber}"/>
</p:column>
</p:dataTable>
目前,我使用带有按钮的javascript函数
使用displayTabInformation js函数隐藏或显示我的数据表:
function displayTabInformation(id,dataTableId){
var divDisplay = dataTableId.style.display;
if(divDisplay === ''){
dataTableId.style.setProperty('display', 'none');
}else if(divDisplay === 'none'){
dataTableId.style.setProperty('display', 'block');
}else{
if(divDisplay === 'visible'){
dataTableId.style.setProperty('display', 'none');
}else{
if(divDisplay === 'block'){
dataTableId.style.setProperty('display', 'none');
}
}
}
}
public void showOrHideLocation(String id) {
SynopticLocationBean synopticLocationBean = getLocation(id);
boolean isCollapsed = synopticLocationBean .getCollapseDataTable();
location.setCollapseDataTable(!isCollapsed);
//TODO How can i refresh my JSF page with my java bean ?
}
我想用JavaBean创建相同的函数来保存显示或隐藏哪个数据库。我添加了一个命令按钮,用于从java托管bean调用函数。我在datatable的“呈现”中使用了一个布尔标志,它在showOrHideLocation函数中设置为true或false 我不知道如何从Java托管bean刷新JSF页面
<p:commandButton value="#{synopticLocationBean.name}" update="item_#{synopticLocationBean.id}" action="#{dashboardView.dashboardService.showOrHideLocation(synopticLocationBean.id)}" styleClass="ui-priority-primary" ajax="true" />
<p:dataTable id="item_#{synopticLocationBean.id}" var="synopticIdBean" value="#{synopticLocationBean.synopticIdBeans}"
sortBy="#{synopticIdBean.longEnteredTime}" sortOrder="ascending"
rowStyleClass="#{synopticIdBean.alarm eq true ? 'old' : null}"
rendered="#{synopticLocationBean.collapseDataTable eq true}">
<p:column headerText="Famille">
<h:outputText value="#{synopticIdBean.family}" />
</p:column>
<p:column headerText="BT">
<h:outputText value="#{synopticIdBean.brNumber}"/>
</p:column>
分解你的问题。如何“折叠”普通html表?在这里也一样。。。客户端都是html、css和Javascript目前我使用的JS方法是“dataTableId.style.setProperty('display','block');”,或者不阻止,但我不知道如何使用java方法和java方法显示的参数id,或者不使用JSF/primefaces组件。这表明你至少有一些基本的工作。我不知道你所说的“我不知道如何使用java方法的参数id,在java方法显示中使用参数id,或者不使用JSF/primefaces组件”是什么意思。。。最好在问题中写“伪代码”,使问题更清楚。Cheres为什么不将这两种解决方案结合起来?例如,在commandbutton的点击中,客户端隐藏并仅通知服务器隐藏?那么就不需要更新页面了。。。顺便说一句,您已经在尝试更新东西,因为commandButtonOk上有
update
属性,用于组合这两个解决方案,但是我应该如何从javascript函数中的托管bean调用java函数呢?java有方法,javascript有函数。因此,前面评论中的问题对我来说并不清楚。除此之外,commandButton已经调用了服务器,您在commandButton上的onclick可以用来调用上面提到的客户端javascript,所以我不明白您认为这是一个什么问题(删除了一些代码)应该这样做
,实际上这不是一个答案。。。那么,showOrHideLocation中的刷新就无关紧要了
public void showOrHideLocation(String id) {
SynopticLocationBean synopticLocationBean = getLocation(id);
boolean isCollapsed = synopticLocationBean .getCollapseDataTable();
location.setCollapseDataTable(!isCollapsed);
//TODO How can i refresh my JSF page with my java bean ?
}