我想将我的表单值传递给我的托管bean以便处理它,但是当我尝试在我的操作方法中检索值时,我总是得到一个空值
我的豆子
@ManagedBean(name="datas")
@SessionScoped
public class Datas implements Serializable {
private static final long serialVersionUID = 1L;
private String ID_primary;
public Datas(){
}
public Datas (String ID_primary){
this.ID_primary=ID_primary;
}
public String getID_primary() {
return ID_primary;
}
public void setID_primary(String ID_primary) {
this.ID_primary= ID_primary;
}
public void process() {
Map<String, String> request=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String value = request.get("ID_primary"); // always return null
System.out.println("ID" + value);
}
}
我的表格
<h:form>
<div align="left">
<h:inputText id="ID_primary" name="ID_primary" value="#{datas.ID_primary}" />
</div>
..........
<div align="right">
<h:commandButton action="#{datas.process()}" value="Create" type="submit" />
</div>
</h:form>
非常感谢您的帮助
答案 0 :(得分:2)
您有两个不同的form
元素,当您点击底部commandButton
中的form
时,顶部form
中的值不会随请求一起发送。
您可以在div
内添加form
这样的标记,这样您就可以在form
内加div
来制作@ManagedProperty
,如果这是您分裂的原因它们。
同时将ID_primary
注释添加到public class Datas implements Serializable {
private static final long serialVersionUID = 1L;
@ManagedProperty(value = "#{Datas.ID_primary}")
private String ID_primary;
[..]
字段:
ManagedBean
编辑:
好的,我的不好,我没仔细看过代码。在带有ManagedProperty
的{{1}}中,此属性将由JSF自动设置,因此您可以这样阅读:
public void process() {
System.out.println("ID" + getID_primary());
}