2016-07-26 45 views
0

我有这个号码:inputTextarea:有没有更好的方式来更新我的支持bean而不提交表单?

<p:inputTextarea id="inputTextArea" value="#{myBean.data}}"> 
    <f:ajax event="blur" /> 
</p:inputTextarea> 

<p:inputTextarea id="inputTextArea" value="#{myBean.data}" /> 

因为我移到别处的提交表单按钮,myBean.data按钮

所以我这样做,当点击保持空

这似乎工作!

但我有一种感觉,有一个更优雅的方式来做到这一点。 我只需要从inputTextarea写入到bean的值,以便当我单击另一个表单中的按钮时,数据将可用。

有什么建议吗?

+1

我觉得这很优雅。您明确声明您想要在离开该字段时将值发送到服务器。所以更难以找到更优雅的方式。但是,如果您仍然只希望在“提交”中提交,那么请发布不起作用的代码,也许有人可以帮助您纠正错误。 – Kukeltje

+0

谢谢。我想也许有一个专门的功能或关键字来做到这一点。 – Tim

+0

正确的是有一个专用的关键字/功能。它是'f:ajax'(或者'p:ajax');-) – Kukeltje

回答

0

这是有点错了。你必须了解JSF的生命周期。要做出简短的回答,在你的按钮上你应该“处理”“@this(按钮本身)和inputTextArea”。然后一切都会好起来的。作为进一步的性能改进,您可以在同一个按钮上使用“partialSubmit = true”,这样只有所述字段(输入和按钮)与表单一起提交。所以,你只需要

<p:inputTextarea id="inputTextArea" value="#{myBean.data}" /> 

(最终没有双括号),然后

<p:commandButton ..... process = "@this inputTextArea" .... partialSubmit = "true" /> 

但相信我,如果你打到现在这个(很简单)的问题...你需要获得一个严肃的JSF书籍,并开始热爱Primefaces手册。

+0

首先看到我上面的评论(你有通知对吗?),其次,OP应该首先创建一个[mcve]如果OP想让我们看看移动按钮时出现的问题。 – Kukeltje

+0

除此之外,如果您在表单中有几十个输入,并且您使用'process =“@ this inputTextArea1 inputTextArea2 ...inputTextArea99',使用你的解决方案并没有真正的区别(如果你包含所有的id,它和默认的(@ form')一样。在每个输入中使用'p:ajax'并且使用'partialSubmit =“真正的''('p:ajax'上的'process'的默认值已经是'@this')是不同jsf阶段的几个部分的更高性能,然后(除恢复视图外,MyFaces的视图缓存也进入在这里玩)所以没有更多的信息没有对错。 – Kukeltje

相关问题