JSF值绑定是单向还是双向?
当我清除我的支持bean数据时,视图仍保留旧值。 这是JSF的工作方式吗? 我想知道一种将视图与支持bean同步的方法。
答案 0 :(得分:0)
不完全确定您要求的是什么,但是,如果您的bean不是请求范围,他们将使用之前的值填充您的html表单控件。
如果您的bean是视图范围或会话范围,您仍然可以通过操作bean的动作方法中的模型值来控制渲染值(commandLink / commanButton actions)
如果您希望在以后访问同一页面时清除这些值,则应该使您的页面bean请求范围。
如果您愿意,可以通过使用绑定而不是值直接对UIComponents进行微观管理以实现完全控制,从而允许您直接在bean中创建和管理UIComponents。
<h:inputText binding="#{bean.inputComponent" />
并在您的代码中
public class myBean {
private UIInput inputComponent;
public UIComponent getInputComponent() {
// create your UIComponent here, and manage values in your command methods
}
public void setInputComponent(UIComponent component) {
inputComponent = component;
}
}
答案 1 :(得分:0)
JSF做你告诉它做的事。
为了刷新视图(在对bean进行一些更改之后),您需要通过从操作方法返回null / void来执行回发到原始视图,或者指定客户端ID(或其他可接受的值,如@form)要执行(更新)并稍后呈现(刷新)作为附加到组件的<f:ajax>
标记的属性的组件改变你的bean。
答案 2 :(得分:0)
是的,数据绑定是双向的。但这并不能解决两个关键问题:
答案是:
这意味着与第一直觉相反: - 像输入这样的组件会保持其状态,并且它与支持bean分离。它可以保留很长时间,甚至很多回发,而不与支持bean同步(例如,如果表单上的任何其他组件无法验证)。
想象生命周期的最简单方法是:
外卖是:
如果你尝试使用JSF和谷物一起使用,那么使用起来真的很愉快。如果试图反对谷物并将JSF转向你对web框架应该如何工作的想法(比如在验证器中使用业务验证,在转换器中更改模型,从构造函数中读取数据库等),你将需要很多BalusC的帮助: - )