Primefaces 6.0。我理解,p:remoteCommand的update属性应该用于指定Ajax应该更新的组件的clientID。我在试着了解PF是如何工作的。它与DataTable结合使用似乎并不像预期的那样工作。当我尝试直接设置update=“form:dataTable:2:bcolumn”
时,它没有任何影响。但是,执行此操作(在下面的代码中注释掉)RequestContext.GetCurrentInstance().update(“Form:DataTable:2:BColumn”);
将强制PF更新指定的OutputText。
为什么会出现这种情况?我会为技术解释感到高兴--我正试图通过调试PF Java/JavaScript源代码来找到答案。
<h:form id="form">
<p:remoteCommand name="remoteCall"
action="#{grid4.onEdit}"
update="form:dataTable:2:bColumn"
/>
<p:dataTable id="dataTable"
var="gridItem"
value="#{grid4.gridItems}"
editable="true" editMode="cell"
>
<p:ajax event="cellEdit"
oncomplete="remoteCall()">
</p:ajax>
<p:column headerText="A">
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{gridItem.a}" /></f:facet>
<f:facet name="input"><p:inputText value="#{gridItem.a}"/></f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="B">
<h:outputText id="bColumn" value="#{gridItem.b}" />
</p:column>
</p:dataTable>
</h:form>
豆子
@ManagedBean
@ViewScoped
public class Grid4 {
private List<GridItem> gridItems = new ArrayList<>();
public Grid4() {
gridItems.add(new GridItem("1", "a","b"));
gridItems.add(new GridItem("2", "a","b"));
gridItems.add(new GridItem("3", "a","b"));
}
public void onEdit() {
System.out.println("onEdit()");
gridItems.get(2).setB("CHANGED VALUE");
// RequestContext.getCurrentInstance().update("form:dataTable:2:bColumn");
}
public List<GridItem> getGridItems() {
return gridItems;
}
public void setGridItems(List<GridItem> gridItems) {
this.gridItems = gridItems;
}
}
基本上,jsf ids和客户端ids是两回事(查看这个答案和这篇文章以获得更好的理解)。
当您使用RequestContext.GetCurrentInstance().update(“Form:DataTable:2:BColumn”);
时,该方法使用客户端id查找必须更新组件,但是对于p:RemoteCommand
的update
属性,它需要的是一个jsf id,而不是生成的客户端id,因此更新不起作用。但是,primefaces支持jquery选择器来更新组件,因此您可以在update
属性上使用客户端id,如以下update=“@(#YouRelementId)”
问题内容: 在数据加载中,似乎某些XML属性映射不正确,我现在正尝试纠正此问题,但在MySQL对XML列的处理方面遇到了麻烦。 我想为带有子字段(属性为’code =“ 3”’)的字段(属性为’tag =“ 520”’)的所有出现的字段纠正XML属性(非值)。下面的查询返回受影响的0行,找到1行。关于如何实现这一目标的任何线索。 为了清晰起见,包含了XML片段: 原始片段 结果是我想要的: 无法解
Hibernate的property元素具有update、insert属性,根据文档,它声明-http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/mapping.html#mapping-声明属性 update,insert(可选-默认为true):指定映射列应包含在SQL update和/或insert语句中。将两者都设置为f
问题内容: 我正在NHibernate中对单个属性执行标准更新。但是,在提交事务时,sql更新似乎设置了我映射到表上的所有字段,即使它们没有更改。当然这不是Nhibernate中的正常行为吗?难道我做错了什么?谢谢 问题答案: 这是正常现象。您可以尝试添加到类定义中以覆盖此行为。
操作步骤: ●单条字段属性更新 ①在"图层管理"模块,选择一个带有数据的图层,点击"数据视图"。 ②双击击字段属性内容,进入编辑状态,进行编辑。 ③编辑完成后点击"确定"按钮,属性内容更新成功。 提示: ●批量更新属性内容。 操作动图: [查看原图]
我遵循了这个官方教程使用Spring boot 2.0.0开始集中配置。RELEASE和Spring cloud Finchley。M8 但是动态刷新属性(不重新启动)不起作用。经过一些调试,我注意到ContextRefresh中的refresh()方法。类,它将正确返回更改后的键,但在下次使用中重建用@RefreshScope注释的bean之后。它仍然看到旧的值,而不是更新的值。 注意:这与Sp
问题内容: 第一次使用Java开发,第一次使用Android开发,因此这是一个新手问题。 我目前有以下代码: 简短问题: 什么是 的.class 属性来完成,f.ex. 在’ C = NewTourny 的.class ‘? 为什么我不能将c转换为Tourny(所有这些类的父类)? 长问题: 目前,这可以处理整个应用程序中的所有按钮导航,并且工作正常。但是,如您所见,当我将c强制转换为Class时