我有一个奇怪的问题。我有一个带有两个控件的JSF页面: - 输入文本 - 按钮
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<af:document title="view12.jsf" id="d1">
<af:messages id="m1"/>
<af:form id="f1">
<af:inputText label="Label 1" id="it98" value="#{param.test}" editable="always"/>
<af:commandButton actionListener="#{bindings.przekierowanie.execute}" text="przekierowanie"
disabled="#{!bindings.przekierowanie.enabled}" id="cb1"/>
</af:form>
</af:document>
我想用URL中的参数初始化InputText(param name是test-value =“#{param.test}”)。在JSF页面中一切都很好。但是点击按钮后我必须从Java Code中读取InputText中的值,所以我有URL:
http://127.0.0.1:7101/Application6-ViewController-context-root/faces/view12.jsf?test=asd
和点击按钮后执行的Java代码是:
public String przekierowanie() {
Map <String,String> map=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String tttValue=map.get("test");
System.err.println("test:" + tttValue);
return null;
}
但这不起作用...每次单击按钮时我都会变为空。你能告诉我为什么以及如何从我的java函数中的InputTex中获取这个值?
答案 0 :(得分:0)
在您的Managed Bean中实现PagePhaseListener
并使用下面的代码来访问URL参数。
示例:
public void beforePhase(PagePhaseEvent pagePhaseEvent) {
if (pagePhaseEvent.getPhaseId() == Lifecycle.PREPARE_MODEL_ID) {
testVar = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("test");
}
}
我正在使用Jdev 11.1.2.0.0
答案 1 :(得分:0)
可能是因为你只返回NULL。
public String przekierowanie() {
Map <String,String> map=FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
String tttValue=map.get("test");
System.err.println("test:" + tttValue);
**return null**;
}