我收到此错误消息:
javax.el.PropertyNotWritableException: /u/editProfile.xhtml @64,140 value="#{empty userProfile.cfg.gpu or userProfile.cfg.gpu == '' ? usernavmsg.EditMe: userProfile.cfg.gpu}": null
问题是,当 bean 属性的值为 null 时,inputText 字段的值会从我的 ManagedBean 属性切换为资源字符串。所以我不能坚持这个价值观。
我从托管 bean 的数据库中请求用户的配置文件。如果所述配置文件的属性为空,则就地文本持有者值是“编辑我”。如果它不为空,则它是该属性的值。这是有效的!但是,当我提交表单并尝试保留新值或根本没有值时,会出现错误。该错误仅出现在开头为空的字段中(当我从数据库请求它们时)。所以问题是,当值为 null 时,它从我的 ManagedBean 属性切换到资源字符串。
我只有一个表格:
<h:outputLabel value="#{usernavmsg.GPU}: "/>
<p:inplace styleClass="lessDark">
<p:inputText value="#{empty userProfile.cfg.gpu ? usernavmsg.EditMe: userProfile.cfg.gpu}" />
</p:inplace>
当我提交表单时,我想将 userProfile.cfg 保留在数据库中,但这并没有发生。
我可以解决这个问题吗?有可能吗?
EL 中的条件语句确实不可写。它们是只读的。故事结局。这同样适用于 EL 中的方法引用,如#{bean.property()}
。它必须确实是一个真实的值表达式,如#{bean.property}
.
您使用(HTML5)“占位符”的方法实际上是错误的。为此,您应该使用placeholder
属性,而不是value
属性。在旧版本的 PrimeFaces 中没有placeholder
您需要直通的属性。
<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<p:inputText value="#{userProfile.cfg.gpu}" a:placeholder="#{usernavmsg.EditMe}" ... />
如今 PrimeFaces 提供了placeholder
属性。
<p:inputText value="#{userProfile.cfg.gpu}" placeholder="#{usernavmsg.EditMe}" ... />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)