【问题标题】:JSF required and hidden fields from db来自 db 的 JSF 必填字段和隐藏字段
【发布时间】:2013-10-04 10:48:39
【问题描述】:

我的项目中有 jsf/primeface 表单组件。还有一个 db 表,它描述了哪个字段应该是必需的或隐藏的。该表被另一个系统(与 java 无关)使用,所以我的项目也应该使用该 db 表。

问题是这些字段及其 id 在数据库中被描述为数字,而在我的项目中,jsf/primefaces 组件具有人类可读的 id。例如,db 表中的“名称”字段具有 id = 1、必需 = 0、隐藏 = 1,而在 xhtml 中我有:

<p:inputtext id="idName" required="false" rendered="true"...>

有什么方法可以让我轻松地将idName 组件映射到数据库条目但不更改数据库表结构?

【问题讨论】:

  • 也许您需要使用Converter

标签: jsf primefaces


【解决方案1】:

只需创建一个表示字段的实体:

public class Field {

    private Long id;
    private boolean required;
    private boolean hidden;

    // ...
}

并在您的视图中使用它,如下所示:

<p:inputText value="#{bean.values[field.id]}" required="#{field.required}" rendered="#{not field.hidden}" />

#{bean.values} 指的是Map&lt;Long, Object&gt;

【讨论】:

  • 我有 200 多个这样的字段,它们都绑定了不同的对象值。例如一个有&lt;p:inputText value="#{newComplaintMB.complaint.rmnr}"..&gt; 另一个有&lt;p:selectOneMenu value="#{newComplaintMB.accruement}"..&gt;。最初我应该在您建议的地图中添加所有内容吗?
  • 您在数据库中也有字段/属性名称? IE。有可能有public class Field { private String name; }?如果是这样,那么使用例如#{newComplaintMB[field.name]} 其中#{field.name} 返回例如accruement.
  • 通过这种方法,我可以使用#{newComplaintMB[field.name]} 从而#{field.name} 返回complaint.rmnr(属性值中的属性值)吗?
  • 在这种情况下,我应该遍历组件循环,但我也有标签、向导步骤和不同组件的不同面板
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 2011-08-14
  • 1970-01-01
  • 2017-08-23
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
相关资源
最近更新 更多