作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我准备了一个简单的购物篮示例,仅用于演示目的。
XHTML 页面:
<p:dataTable id="cartDataTable" value="#{testManagedBean.qtyList}"
var="cart"
selection="#{testManagedBean.selectedQtyList}"
rowKey="#{cart.id}">
<p:column selectionMode="multiple" />
<p:column>
<h:outputText value="#{cart.id}"/>
</p:column>
<p:column>
<p:inputText value="#{cart.qty}"/>
</p:column>
</p:dataTable>
<p:commandButton value="Delete" process="@this cartDataTable"
actionListener="#{testManagedBean.delete}"/>
@ManagedBean
@SessionScoped
public final class TestManagedBean implements Serializable
{
private List<Cart>qtyList; //Getter only.
private List<Cart>selectedQtyList; //Getter and setter.
private static final long serialVersionUID = 1L;
@PostConstruct
public void init()
{
qtyList=new ArrayList<>();
qtyList.add(new Cart(1, 1));
qtyList.add(new Cart(2, 1));
qtyList.add(new Cart(3, 2));
qtyList.add(new Cart(4, 1));
qtyList.add(new Cart(5, 3));
}
public void delete()
{
for(Cart cart:selectedQtyList) {
System.out.println(cart.getId()+" : "+cart.getQty());
}
System.out.println("Perform deletion somehow.");
}
}
Cart
非常直观,只有两个
Integer
类型的属性即
id
和
qty
和一个参数化的构造函数。
process
<p:commandButton>
的属性设置为
@this
和
cartDataTable
它将选定的行设置为 bean 的属性
selectedQtyList
, 按下此按钮时。
qtyList
.
process
<p:commandButton>
的属性设置为
@this
仅(即
process="@this"
从此属性中删除
cartDataTable
)然后,所选行不会设置为托管 bean 属性
selectedQtyList
.
最佳答案
据我了解,你基本上是想防止<p:inputText value="#{cart.qty}">
当按下删除按钮时被处理(更新模型值)。理论上,应该只在 process
中指定选择列。属性,可惜<p:dataTable>
没吃那个。另外,immediate="true"
在按钮上将无济于事,因为 <p:column selectionMode>
不支持。
您最好的办法是确保 rendered
输入字段的属性只计算 true
如果未按下删除按钮或当 JSF 呈现响应时。
<p:inputText ... rendered="#{empty param[delete.clientId] or facesContext.renderResponse}" />
...
<p:commandButton binding="#{delete}" ... />
关于jsf - 跳过处理 p :dataTable when a button is pressed which only needs to get selected rows 内部的输入组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24725699/
我是一名优秀的程序员,十分优秀!