Ada*_*dam 19 java jsf servlets
如何在支持JSF页面的bean中获取请求URL?我一直在浏览FacesContext文档,我找到的最好的方法似乎非常长:
public String getRequestURL()
{
Object request = FacesContext.getCurrentInstance().getExternalContext().getRequest();
if(request instanceof HttpServletRequest)
{
return ((HttpServletRequest) request).getRequestURL().toString();
}else
{
return "";
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:功能要求这里的要求是我们需要第三方JavaScript实用程序的完整URL.该实用程序的使用或体系结构不适合JSF,但是这个调用的所有内容都没有.我发现的方法会起作用,但是如果深入挖掘FacesContext则感觉不对.另外,我希望有一种可以用JSF表达式语言调用的方法,因为它将以"视图"相关的方式使用.
Bal*_*usC 31
如果你需要从JSF引擎盖下运输原始的Servlet API FacesContext,那么很可能你在错误的地方做了工作.这是什么,您认为这是正确的解决方案的功能要求?您是否应该使用真正的Servlet类或Filter代替JSF托管bean?或者可能根本不需要请求URL,因为有更好的"jsfish"方法来实现相同的目标?
如果您更新问题以包含有关功能要求的详细信息,那么我们可能会建议正确的解决方案.
根据您的编辑进行更新:那么,您在视图方面是否只需要它?比如#{bean.requestURL}?您也可以从HttpServletRequest已经隐含在EL中的对象中获取它.
当你在使用JSP时:
${pageContext.request.requestURL}
Run Code Online (Sandbox Code Playgroud)
或者当你在Facelets上时:
#{request.requestURL}
Run Code Online (Sandbox Code Playgroud)
现在,你如何需要JavaScript?打印为JavaScript变量?像这样?
var url = '#{request.requestURL}';
Run Code Online (Sandbox Code Playgroud)
如果是这样,你也可以抓住window.location它.
var url = window.location;
Run Code Online (Sandbox Code Playgroud)
不需要使用视图特定的细节来混乱JSF bean.
| 归档时间: |
|
| 查看次数: |
45554 次 |
| 最近记录: |