2017-10-19 114 views
0

任何人都可以解释为什么h:inputText必须有required="true"当在控制器中设置属性并使用ajax更新时(请参阅下面的示例)?JSF inputText只读取required =“true”

不起作用:

<h:inputText id="textFieldId" value="#{model.itemValue}"> 

作品:

<h:inputText id="textFieldId" value="#{model.itemValue}" required="true"> 

操作:

<p:commandLink value="edit"> 
    <p:ajax event="click" listener="#{controller.edit(item)}" process="@this" update="@form"/> 
</p:commandLink> 

背后的思想是,我要为项目按下按钮能够编辑等等我需要将这个项目传播给inputText。

我看不到有任何理由要求设置为true。

感谢

+1

'p:commandLink'已经启用了ajax ...不需要'p:ajax'标签!并且使用'process =“这个”''可以防止输入被忽略',所以请创建一个[mcve]来表示真实的意图 – Kukeltje

+0

其实你的建议解决了这个问题。删除ajax并添加到命令链接作为操作。谢谢 – Smolda

回答

1

的PrimeFaces p:commandLink默认情况下已经启用了AJAX的,所以没有必要窝里面一个p:ajax标签。

<p:commandLink value="edit" actionListener="#{controller.edit(item)}" 
    process="@this" update="@form"/> 

但是请记住,如果你添加一个process="@this",输入不在服务器,只是commandLink上处理。如果'item'字段在这种情况下正确传递,我不清楚。