我们有一个更新动态包含的ajax导航菜单.包含文件各有各自的表单.
<h:form>
<h:commandButton value="Add" action="#{navigator.setUrl('AddUser')}">
<f:ajax render=":propertiesArea" />
</h:commandButton>
</h:form>
<h:panelGroup id="propertiesArea" layout="block">
<ui:include src="#{navigator.selectedLevel.url}" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)
它工作正常,但包含文件中的任何命令按钮在第一次单击时都不起作用.它仅适用于第二次点击.
我发现这个问题commandButton/commandLink/ajax动作/监听器方法没有被调用或输入值没有更新,我的问题在第9点描述.我明白我需要明确地包含在解决它的包<h:form>中的ID <f:ajax render>.
<f:ajax render=":propertiesArea :propertiesArea:someFormId" />
Run Code Online (Sandbox Code Playgroud)
但是,在我的情况下,表单ID事先是未知的.此表格最初也不会在上下文中提供.
上述方案有什么解决方案吗?
我正在尝试设置webfilter并需要一些帮助.我的过滤器在初始登录时运行正常,但是当会话超时,并且我点击任何链接时,它会触发我的重定向语句,但浏览器中的网页永远不会被重定向.有人可以帮忙解决这个问题吗?非常感激.
过滤
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package src;
import java.io.IOException;
import javax.faces.application.NavigationHandler;
import javax.faces.context.FacesContext;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
*
* @author Bernard
*/
@WebFilter(filterName = "LoginFilter", urlPatterns = {"/*"})
public class LoginFilter implements Filter {
//FilterConfig fc;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//fc = filterConfig; …Run Code Online (Sandbox Code Playgroud) 我有一个selectonemenu,其中选择的更改应该导航用户到相关页面.
那么,如何使用selectonemenu控件模拟命令按钮的动作处理(或者有更优雅的方法来实现这一点)?
是否有可能设置一个<a href />在我<f:selectItem itemLabel="label" />在我的链接文字是itemLabel?
我正在使用普通的太阳组件.
我想从JSF操作方法转发请求到非JSF页面.我在JSF操作中使用下面的代码:
public String submitUserResponse() {
// ...
parseResponse("foo.jsp", request, response);
// ...
return "nextpage";
}
private String parseResponse(String uri, HttpServletRequest request, HttpServletResponse response) {
if (uri != null) {
RequestDispatcher dispatcher = request.getRequestDispatcher(uri);
dispatcher.forward(request, response);
return null;
}
// ...
return "xxxx";
}
Run Code Online (Sandbox Code Playgroud)
在submitUserResponse()当用户点击来自JSF页面的提交按钮被称为动作方法,并且此方法返回nextpage的字符串.这里请求转发到正常流程中的下一个JSF页面.但在我的要求中,我需要将请求转发到下一个非JSF页面.它正在运行,但它在服务器中显示以下异常.
java.lang.IllegalStateException:在提交响应后无法转发
我观察到转发请求后使用的代码行parseResponse(...)和return "nextpage";仍在执行dispatched.forward(uri).同样的事情发生了response.sendRedirect(url).这是怎么造成的,我该如何解决?