我需要这个链接:
HTTP:// MYSERVER:/myproject/innerpage/clip.jsf&id=9099
从这样的代码中提取id:
HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
String clipId = request.getParameter("id");
Run Code Online (Sandbox Code Playgroud)
当我在tomcat上运行它时,我得到:
消息/OnAir/innerpage/clip.jsf&id=9099
description请求的资源(/OnAir/innerpage/clip.jsf&id=9099)不可用.
当我在没有&id = 9099的情况下运行它时,它运行正常.
我该如何让它运行?
Bal*_*usC 24
URL中路径和查询字符串之间的分隔符?不是&.该&是在查询字符串,如多个参数分隔符name1=value1&name2=value2&name3=value3.如果省略?,则查询字符串将被视为URL中路径的一部分,这将导致遇到HTTP 404页面/资源未找到错误.
所以,这个链接应该工作http:// myserver:port/myproject/innerpage/clip.jsf?id = 9099
也就是说,有一种更好的方式来访问请求参数.将其设置为值为的托管属性#{param.id}.
public class Bean {
@ManagedProperty(value="#{param.id}")
private Long id;
@PostConstruct
public void init() {
System.out.println(id); // 9099 as in your example.
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
EL #{param.id}返回值request.getParameter("id").
提示:每当你需要从托管bean内部的JSF引擎下运送"原始"Servlet API时,总是问自己(或者在SO):"不存在JSF方式吗?".很有可能你不必要地过度复杂化了事情;)
| 归档时间: |
|
| 查看次数: |
21404 次 |
| 最近记录: |