我将JSP值传递给JSF的支持bean。一旦我在bean中获取了值,那么我试图用setter方法为inputText字段赋值,就像这样。
public void testProcess(){
empBean.setEmpName(empBean.getEmpId());
}
在JSP页面的操作中调用testProcess方法。
我的问题是,当我在bean中设置值时,我的JSF页面的值不会被填充。我是否需要显式刷新我的JSF页面,如果是这样我怎么能这样做?
答案 0 :(得分:1)
是的,您需要刷新主页面。服务器上发生的事情不会自动在客户端(浏览器)上发生。
此类操作的一个相当常见的模式是让弹出窗口使用ajax执行表单发布(很容易使用许多javascript框架,如jQuery)。有关使用jQuery表单插件的一个很好的示例,请参阅http://jquery.malsup.com/form/。在ajax-call的响应处理程序中,重新加载主页面(使用window.opener属性)并关闭弹出窗口。在使用jQuery Form插件的示例中,您可以执行以下操作:
<script type="text/javascript">
// wait for the DOM to be loaded
$(document).ready(function() {
// bind 'myForm' and provide a simple callback function
$('#myForm').ajaxForm(function() {
// reload main page
window.opener.location.reload();
// close popup
window.close();
});
});
</script>
您希望使用ajax提交表单的原因是您希望等待刷新主页直到帖子完成并且执行常规发布将导致弹出窗口重新加载,这在某些浏览器中将使窗口无效。 opener属性,无法重新加载主页面。