我在PrimeFaces 4.0中使用JSF2.1,令人惊讶的是我无法找到一个简单的解决方案,如果已填充另一个字段,如何禁用字段。例如。如果我输入"加上数量"字段和我通过单击或使用选项卡离开该字段,"减去数量"字段应该被禁用。
我发现的只是做这样的事情
<p:inputText id="minusQty" disabled="#{not empty order.plusQty}"/>
<p:inputText id="plusQty" value="#{order.plusQty}">
<f:ajax update="minusQty" />
</p:inputText>
但我发现调用服务器执行这么简单的任务有点重。我也不想添加自定义JS代码。我想在JSF / PF中有一种内置方式,但我找不到它......
答案 0 :(得分:2)
但我觉得调用服务器执行这么简单的任务有点重要
测量它而不是做出假设。
我也不想添加自定义JS代码
归结为只使用正确的工具来完成工作。除了<p:ajax>
和<f:ajax>
混合(<f:ajax>
不支持update
属性)之外,您目前看到的代码看起来还不错。我只使用<p:ajax partialSubmit="true">
来减少请求的有效负载,特别是如果这是一个相对较大的形式的一部分。
最终可能会进入JS方向,请记住,在客户端启用/禁用HTML DOM元素不会启用/禁用服务器端的JSF组件。换句话说,当你使用纯JS这样做时,黑客仍然能够提交价值。在考虑客户端或服务器端执行某些任务时,请始终牢记这一点。