jsf - jsf获取bean内部的请求参数
问题描述
我知道这之前已经讨论过,但是我创建的示例不起作用。
豆:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.*;
import java.io.Serializable;
import java.util.Map;
@ManagedBean
@SessionScoped
public class HelloBean implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String submit() {
FacesContext fc = FacesContext.getCurrentInstance();
Map<String,String> params =
fc.getExternalContext().getRequestParameterMap();
System.out.println("params" + params);
String country = params.get("country");
System.out.println("country:" + country);
return "welcome";
}
}
这是页面:
</h:head>
<h:body>
<h:outputScript library="js" name="common.js" />
<!-- <h:outputScript library="js" name="websocket.js" /> -->
<h3>JSF 2.0 Hello World Example - hello.xhtml</h3>
<h:form>
<h:inputText value="#{helloBean.name}"></h:inputText>
<h:commandButton value="Welcome Me" action="#{helloBean.submit}"> </h:commandButton>
</h:form>
</h:body>
</html>
当我这样调用页面时:localhost:8080/JavaServerFaces2/hello.xhtml?country=123
并按下按钮,我希望提交方法会在控制台中打印国家/地区值。但它打印:
2018-05-13T17:06:48.872+0200|Info: params{j_idt7=j_idt7, j_idt7:j_idt8=, j_idt7:j_idt9=Welcome Me, javax.faces.ViewState=- 4186994023180961740:1040096002697043710}
2018-05-13T17:06:48.872+0200|Info: country:null
为什么?
ps 我急切地等待粘贴代码的新功能,我相信它会很棒。
解决方案
将 .xhtml 中的表单更改为:
<h:form>
<h:inputText value="#{helloBean.name}"></h:inputText>
<h:commandButton value="Welcome Me" action="#{helloBean.submit}">
<f:param name="country" value="#{param.country}" />
</h:commandButton>
</h:form>
并且请求参数从第一个页面视图中保留并显示在控制台中
推荐阅读
- python - 安装 Pysal:错误:无法卸载“llvmlite”。这是一个 distutils 安装的项目
- android - 如何保存 rss feed sqlite 数据 android?
- python - ensure_future() 似乎没有执行
- google-chrome - 使用 WWW::Mechanize::Chrome 在当前选项卡上实现自动化
- java - 在没有 playstore 的情况下更新 android OS 中的 APK 应用程序版本,没有交互,更新的 apk 是否在远程服务器上?
- variables - 如何在邮递员中设置动态变量
- html - 托管本地动态 wordpress 网站
- java - 我有 java.lang.ClassNotFoundException: org.bouncycastle.asn1.ASN1OctetString
- laravel - lumen laravel:如何返回第一个错误的消息?
- oracle - 为什么循环运行十次而不是九次?十不大于十吗?