每次单击a4j:commandButton时是否应该执行JSP Scriplet元素?
我有一个jsp页面,页面顶部有一个scriplet元素。在f:view和h:form标记之后的正文中,我有一个4J:commandButton,在其中我提供了操作。现在,每当scriplet元素被执行时,我按下a4j:commandButton,这是我对服务器的ajax调用。这是正常的行为还是我犯了错误 JSP脚本是由于在JSF视图构建期间(因此,在回发的恢复视图阶段)执行的遗留JSP视图技术的性质造成的。所以是的,这绝对是预期的行为 听起来好像您只想在初始GET请求上执行一些Java代码,而不想在后续回发上执行。在这种情况下,如果返回每次单击a4j:commandButton时是否应该执行JSP Scriplet元素?,jsp,jsf,Jsp,Jsf,我有一个jsp页面,页面顶部有一个scriplet元素。在f:view和h:form标记之后的正文中,我有一个4J:commandButton,在其中我提供了操作。现在,每当scriplet元素被执行时,我按下a4j:commandButton,这是我对服务器的ajax调用。这是正常的行为还是我犯了错误 JSP脚本是由于在JSF视图构建期间(因此,在回发的恢复视图阶段)执行的遗留JSP视图技术的性质造成的。所以是的,这绝对是预期的行为 听起来好像您只想在初始GET请求上执行一些Java代码,而不
false
,请检查scriptlet
FacesContext context = FacesContext.getCurrentInstance();
if (!context.getRenderKit().getResponseStateManager().isPostback(context)) {
// Not a postback. Do your job here.
}
注意,在JSF2.x中有一个较短的方法是通过FacesContext#isPostback()
,但是由于您使用的是遗留JSP,我假设您仍然使用遗留JSF1.x
另见:
与具体问题无关,自十年前的JSP 2.0以来,不鼓励使用Scriptlet。建议在普通Java类中执行该作业。例如,在支持bean的(post)构造函数中。您可以使用
JSP脚本是由于在JSF视图构建期间(因此,在回发的恢复视图阶段)执行的遗留JSP视图技术的性质造成的。所以是的,这绝对是预期的行为
听起来好像您只想在初始GET请求上执行一些Java代码,而不想在后续回发上执行。在这种情况下,如果返回false
,请检查scriptlet
FacesContext context = FacesContext.getCurrentInstance();
if (!context.getRenderKit().getResponseStateManager().isPostback(context)) {
// Not a postback. Do your job here.
}
注意,在JSF2.x中有一个较短的方法是通过FacesContext#isPostback()
,但是由于您使用的是遗留JSP,我假设您仍然使用遗留JSF1.x
另见:
与具体问题无关,自十年前的JSP 2.0以来,不鼓励使用Scriptlet。建议在普通Java类中执行该作业。例如,在支持bean的(post)构造函数中。您可以使用