【问题标题】:Which PrimeFaces component to use?使用哪个 PrimeFaces 组件?
【发布时间】:2013-05-10 03:14:29
【问题描述】:

我有一个要求,我必须显示和输入特定工作的 24 小时值。对于一个特定的企业,可能有 100 个工作岗位。所以基本上 100 行有 24 个输入字段。

我从一个包含 24 个 p:input 字段的数据表开始,但在验证和提交期间,我一次无法发送超过 512 个请求。 (JBOSS中AJAX请求参数设置)

我尝试更改为 p:cellEditor 而不是 p:input,但它仍会发送整个表单进行验证。

因此,如果有人可以向我推荐一个 primefaces 组件,它有一个类似于显示多行的数据表,并且每一行都有多个输入字段。

【问题讨论】:

  • ajax提交呢?例如,使用 event="blur" 提交值或更改 JBoss AS 中的设置。
  • 您可能想要重构视图/设计。您正在考虑的表单设计可能看起来非常混乱 IMO
  • 使用数据表和对话框。在每一行中给出一个按钮,单击该按钮时应弹出对话框。该对话框包含 24 个输入,您可以使用滚动或使用 jquery/javascript 来隐藏/显示下一个/上一个文本框组。

标签: jsf-2 primefaces jboss java-ee-6


【解决方案1】:

您可以在数据表上使用分页来限制一次显示的行数。如果您使用 20 行的分页,那应该转换为大约 24x20=480 个数据值。

【讨论】:

  • 目前我是这样实现的,但是业务需要更多的行。
【解决方案2】:

这是我已经归零的解决方案。 我没有提交整个表单进行验证和提交,而是使用 ajax 组件在用户更改值时提交。

<p:inputText id="input1" value="#{row.amount[0]}" maxlength="10" size="10"  
 readonly="#{row.readOnly}" styleClass="col-right" >
<f:convertNumber  maxFractionDigits="3" minFractionDigits="3" maxIntegerDigits="5" />
<f:validator validatorId="validator" for="input1" />    
<p:ajax event="change" partialSubmit="true" process="input1" update=":#{p:component('globalMessages')}"   listener="#{controller.saveValues(row.amount[0])}"/>
</p:inputText>

【讨论】:

  • 如果用户同时更新许多值,这可能仍然存在问题。此解决方案假设用户永远不会更新超过 400 多个字段。如果这是一个有效的假设,那么这可能会起作用。
  • 非常正确..找到了艰难的道路。这适用于保存和验证,但如果我们进行页面导航,它会严重失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-27
  • 1970-01-01
  • 2018-01-11
  • 2016-10-21
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多