动态使输入标签只读

Dynamic making input-tag readonly

此时我在 Tomee (v1.7.4) 中使用 Tomahawk20 (v1.1.14) 作为我的表单输入字段:

<t:inputText id="email" value="#{bean.klant.email}" maxlength="255" size="50" readonly="#{bean.aktie.readonly}" />

#{bean.aktie.readonly} returns truefalse。 Tomahawk 负责只读属性的设置。

现在我想换成bootstrap.js。在这里我可以使用普通的 <input /> 标签,但是 readonly 的设置给我带来了麻烦。我在互联网上搜索但找不到解决方案。在一个站点上,他们提议使用三元测试 (${bean.aktie.readonly?'readonly':''}):

<input id="email" type="text" class="form-control" value="#{bean.klant.email}" maxlength="255" size="50" ${bean.aktie.readonly?'readonly="readonly":''} />

然而,这给了我错误:

javax.servlet.ServletException: Error Parsing /viewMetadata/bean/detail.xhtml: Error Traced[line: 99] Element type "input" must be followed by either attribute specifications, ">" or "/>".

实现此目的最简单的方法是什么?

<input> 不是 JSF 标签,这就是问题所在。您必须使用 h:inputText http://www.tutorialspoint.com/jsf/jsf_inputtext_tag.htm

您还遗漏了一些引文。试试这个:

<h:inputText id="email" styleClass ="form-control" value="#{bean.klant.email}" maxlength="255" size="50" disabled="${bean.aktie.readonly}" /> 

顺便说一下,如果您有兴趣将 Bootstrap 与 JSF 结合使用,请查看:http://www.bootsfaces.net 编写 BootStrap 页面将变得异常简单看起来棒极了。

编辑

一定要看到第一条评论,你也许可以用不同的方式做到这一点