我需要根据用户在jsf页面中提供的输入更新属性文件。更新文件后,应清除用户会话,并且警告框应显示“设置已更新”,页面应导航到登录页面。
我不知道如何从java代码调用警告框。我发现这可以在asp.net中实现。我搜索谷歌,但没有得到任何可能的解决方案
我怎样才能做到这一点?
欢迎所有可能的解决方案。提前谢谢。
更新 @balusc感谢您的指针。我正在使用JSF RI 1.2和Richfaces 3.3.2
答案 0 :(得分:2)
我设法通过在a4j命令按钮中使用'oncomplete'属性来解决这个问题。 'oncomplete'属性用于在服务器端进程完成后调用javascript函数。
完成服务器端进程后,我调用了一个调用警告框并使用
的javascript函数document.location="../login.jsf";
我导航到登录页面。
欢迎任何有关此解决方案的建议。
感谢每一位人士的回答和评论。
答案 1 :(得分:1)
答案 2 :(得分:1)
要显示警告框,您可以在bean中使用以下代码:
JavascriptContext.addJavascriptCall(facesContext, "alert('Setting has been updated');");
清除会话:
HttpSession session = (HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(false);
session.invalidate();
答案 3 :(得分:1)
将rich:modalPanel
showWhenRendered
属性设置为托管bean的布尔属性。然后只需在调用后重新调整模态面板的父级。
List of attributes for modal panel
例如:
<a4j:outputPanel id="modalParent">
<rich:modalPanel showWhenRendered="#{bean.someBooleanValue}">
</rich:modalPanel>
</a4j:outputPanel>
您的按钮/链接会有reRender="modalParent"
答案 4 :(得分:0)
像this
这样的东西<%
ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response = (HttpServletResponse)ectx.getResponse();
HttpSession session = (HttpSession)ectx.getSession(false);
session.invalidate();
%>
<script type="text/javascript">
alert('Setting has been updated');
location.replace('/index.jsp');
</script>