【问题标题】:JSF removes custom HTML component attributes [duplicate]JSF 删除自定义 HTML 组件属性 [重复]
【发布时间】:2013-07-30 12:56:33
【问题描述】:

我正在使用http://parsleyjs.org/ Javascript API 对 JSF 表单进行表单验证。

我已在页面标题中包含 Parsley min JS。

电子邮件验证输入文本的示例代码:

 <h:inputText id="userName" class="editText"
value="#{administrator.userName}" data-trigger="change"
data-required="true" data-type="email" />

为 Parsley API 定义了标签 data-trigger、data-required 和 data-type。

但是 JSF 在生成的 HTML 中删除了这些标签。

<input id="j_idt22:userName" type="text" name="j_idt22:userName" class="editText">

在生成的 HTML 中添加这些自定义标签的方法是什么?

【问题讨论】:

  • 要么使用 JSF 生成 HTML,要么自己编写。不受支持的标签会发生什么,取决于 JSF 实现。
  • 好的。那么前进的方向是什么,我们应该如何实现自定义标签?
  • 除了问题(使用自定义渲染器或 OmniFaces Html5RenderKit 很容易解决),为什么不直接使用 JSF 内置验证?客户端验证是可破解/可欺骗且完全不可靠的。另见stackoverflow.com/questions/4013410/…

标签: html jsf tags


【解决方案1】:

您不需要编写自己的标签,为 JSF 标签编写自己的渲染器就足够了。一个不会忽略您的自定义属性的渲染器。

查看here,了解如何为所有输入编写和配置这样的渲染器。

【讨论】:

  • 这行得通。但是在将自定义标签应用于输入文本时,生成的 HTML 会将标签赋予其父元素。在我的例子中,它在一个表格中,因此自定义标签被分配给包含该输入文本的“td”元素。那么有什么解决办法呢?
  • 即使这个问题也可以通过使用@dileks 在您提供的链接上提供的 Renderer 类得到解决!
猜你喜欢
  • 1970-01-01
  • 2015-01-02
  • 2017-11-11
  • 2014-02-06
  • 1970-01-01
  • 2015-01-02
  • 1970-01-01
  • 2013-05-16
相关资源
最近更新 更多