jsf - 如何在jsf中重置?

标签 jsf liferay facelets portlet

我正在使用 liferay 和 jsf。在我的 portlet 中,我尝试在提交页面后通过为支持 bean 设置新值来重置。我得到了空白字段,但是当我刷新页面时,我又得到了我之前提交的旧值,并且它再次提交了旧值。

我尝试获取新的 viewroot,但它也给了我相同的结果。

public void reset(AjaxBehaviorEvent event){

    FacesContext context = FacesContext.getCurrentInstance();
    Application application = context.getApplication();
    ViewHandler viewHandler = application.getViewHandler();
    UIViewRoot viewRoot = viewHandler.createView(context, context
            .getViewRoot().getViewId());
    context.setViewRoot(viewRoot);
    context.renderResponse(); //Optional

    this.MyBean = new MyBean();
}

附言提交后,我将此方法称为 reset(null);

最佳答案

如果你想在每次请求后重置bean;在这种情况下,您可以使用 jsf 提供的范围而不是使用函数。

request 范围内使用 bean

tutorial on bean scopes

关于jsf - 如何在jsf中重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14645285/

相关文章:

java - 如何在tomcat中调试war文件

jsf - 我需要 jsf-api 或 jsf-impl 还是两者都需要才能开始使用 JSF?为什么不合并?

apache - Liferay 80端口转发

java - 新的 .xhtml 页面不会呈现任何 jsf 标签,但以前创建的页面在同一个项目中仍然可以正常工作

java - 更好 <h :selectManyCheckbox> layout?

java - 如何在呈现页面之前执行 bean 方法?

java - 如何将值映射到文本?

java - 获取具有操作权限的liferay用户列表

java - 更改 liferay 门户中的 Logo

jsf - 已淘汰的Facelets代码仍会调用#{bean.action()}之类的EL表达式,并在#{bean.action}上导致javax.el.PropertyNotFoundException