我在JSF页面中有一个inputText和一个commandButton。用户输入内容然后在结果页面中重定向,该结果页面还具有具有相同功能的inputText和commandButton。 commandButton应该在单击时执行某些操作并重定向到REST URL(结果页面),该URL是通过将inputText值附加到基URL中构建的。我尝试了很多东西但是我没有设法在第二页中完成这项工作。我到现在为止尝试的是:
在commandButton的动作中,我调用我的方法,然后返回重定向的URL,因为我的bean中有inputText值。我使用AJAX在keyup事件上呈现commandButton。这适用于第1页但不适用于第2页。问题是,每次用户键入字母时,按钮都会呈现,我的方法被调用,我不想要,因为我只想在用户单击按钮时调用它们
我在我的bean中创建了一个方法,我在其中放置了所有方法。我尝试使用PostConstruct方法和使用preRenderView的f:事件来调用方法。再次使用AJAX,这不起作用,因为每次用户输入内容时都会调用该方法。
答案 0 :(得分:1)
问题在于,每次用户键入字母时,都会呈现按钮并调用我不想要的方法,因为我只想在用户单击按钮时调用它们。
然后不要渲染按钮。也许您在<f:ajax render>
属性中使用过于通用的客户端标识符,如@form
。只需将其替换为不包含按钮的更具体的内容。
再次使用AJAX,这不起作用,因为每次用户输入内容时都会调用该方法。
检查它是否不是ajax请求。
if (!FacesContext.getCurrentInstance().getPartialViewContext().isAjaxRequest()) {
// Not an ajax request.
}