相关疑难解决方法(0)

"绑定"属性如何在JSF中起作用?应该何时以及如何使用?

在JSF中有很多材料区分value属性和binding属性.

我对这两种方法如何彼此不同感兴趣.鉴于:

public class User {
    private String name;
    private UICommand link;

    // Getters and setters omitted.
}
Run Code Online (Sandbox Code Playgroud)
<h:form>
    <h:commandLink binding="#{user.link}" value="#{user.name}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)

value指定属性时会发生什么变化.getter运行以返回bean 的name属性值User.该值将打印到HTML输出.

但我无法理解它是如何binding运作的.生成的HTML如何维护与bean link属性的绑定User

下面是手动美化和注释后生成的输出的相关部分(注意id j_id_jsp_1847466274_1是自动生成的,并且有两个隐藏的输入小部件).我正在使用Sun的JSF RI 1.2版.

<form action="/TestJSF/main.jsf" enctype="application/x-www-form-urlencoded"
    id="j_id_jsp_1847466274_1" method="post"  name="j_id_jsp_1847466274_1">
    <input name="j_id_jsp_1847466274_1" type="hidden" value="j_id_jsp_1847466274_1">
    <a href="#" onclick="...">Name</a>
    <input autocomplete="off" id="javax.faces.ViewState" name="javax.faces.ViewState"
        type="hidden" value="-908991273579182886:-7278326187282654551">
</form>
Run Code Online (Sandbox Code Playgroud)

在哪里binding存放在这里?

jsf binding components jsf-2

74
推荐指数
1
解决办法
10万
查看次数

在JSF中获取请求参数值

我有一个<odc:tabbedPanel/>组件.在这里我在<odc:bfPanel/>组件中有一个页面.我想从<odc:bfPanel/>我的<odc:tabbedPanel/>托管bean类中的页面访问一个值(inputtext或radiobutton).请指导我如何解决这个问题.请注意,我不想在这里使用会话.我只想要它.我尝试过以下选项,但它们对我不起作用.

选项一

String value = (String) ctx.getExternalContext()
                        .getRequestParameterValuesMap()
                        .get("managedbean.property");
Run Code Online (Sandbox Code Playgroud)

选项二

String value = (String) ctx.getExternalContext()
                         .getRequestParameterValuesMap()
                         .get("property");
Run Code Online (Sandbox Code Playgroud)

选项三

HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance()
                         .getExternalContext().getRequest();
System.out.println(req.getParameter("property"));
Run Code Online (Sandbox Code Playgroud)

选项四

Map requestMap = FacesContext.getCurrentInstance() 
                         .getExternalContext().getRequestHeaderValuesMap(); 
String msgId = (String) requestMap.get("property"); 
System.out.println(msgId);
Run Code Online (Sandbox Code Playgroud)

选项五

HttpServletRequestWrapper r = new HttpServletRequestWrapper(req);
String value1 = r.getParameter("managedbean.property");
Run Code Online (Sandbox Code Playgroud)

我想要的值不在jsp的托管bean中...但我希望它在另一个托管bean中.在这里我有一个页面内的页面(因为我已经提到它的标签面板).现在我想要外部选项卡的托管bean中的值 -

java jsf

20
推荐指数
1
解决办法
6万
查看次数

没有bean属性的JSF组件绑定

以下代码如何工作:

#{aaa.id}
<h:inputText id="txt1" binding="#{aaa}"/>
Run Code Online (Sandbox Code Playgroud)

我的意思是,通常组件绑定工作,通过在bean中指定属性(类型为UIComponent).这里没有bean也没有属性但是名称"aaa"被正确绑定(显示组件id - "txt1").它是如何工作的/指定的位置?

谢谢

更新:JSF2.0规范[pdf](第3.1.5章)说:

"组件绑定是一种特殊的值表达式,可用于促进将组件实例"连接"到JavaBean的相应属性...指定的ValueExpression必须指向UIComponent类型的读写JavaBeans属性(或适当的)子类)."

el jsf-2

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

jsf ×2

jsf-2 ×2

binding ×1

components ×1

el ×1

java ×1