相关疑难解决方法(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数据表中显示行索引

在JSF dataTable中,我想显示行旁边的行索引...如:

Column A    Column B
1           xxx
2           yyy
Run Code Online (Sandbox Code Playgroud)

我认为我可以使用像#{rowIndex}这样的隐式el变量,但这不起作用.

我找到的解决方案是为数据表创建绑定并使用绑定,如:

<h:dataTable var="item" value="#{controller.items}" binding="#{controller.dataTable}">
    <h:column>#{controller.dataTable.rowIndex}</h:column>
    <h:column>value</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

但是当我在页面中有许多嵌套的dataTable时,这个解决方案很复杂并且不能很好地工作.

关于如何以更好的方式解决这个问题的任何想法?

datatable jsf

24
推荐指数
3
解决办法
8万
查看次数

没有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万
查看次数

component.clientId 和 p:component() 生成的 client id 的区别

我正在尝试检索 ap:dataList 中的 ah:panelGroup 的客户端 ID。

我尝试了两种方法:

1.使用 component.clientId 例如:

<h:panelGroup id="listItem">
    <h:outputText value="#{component.clientId}" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

2.使用 p:component() 例如:

<h:panelGroup id="listItem">
    <h:outputText value="#{p:component('listItem')}" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

请注意,此面板组位于数据列表中。现在,在这两种情况下生成的客户端 ID 是不同的。(1) 没有附加到客户端 ID 的值“listItem”,而 (2) 在生成的 clientId 中具有值“listItem”。

此外,使用 (1) 生成的客户端 ID 与生成的 html 组件上的不同。

任何人都可以对这个问题有所了解,为什么会这样?

jsf el clientid primefaces

4
推荐指数
1
解决办法
4430
查看次数

如何知道组件子组件是否不是有效的 Primefaces?

<h:panelGroup>我正在使用 Primefaces 5.0,当<p:inputText>无效时我需要在元素中添加类。我有以下代码:

<h:panelGroup layout="block" styleClass="form-group #{ VALIDATION HERE ? '' : 'has-error'}" >                               
  <p:outputLabel for="txtUserId" value="ID:"/>
  <p:inputText styleClass="form-control" id="txtUserId" required="true" value="#{userAction.user.id}">                                  
      <f:ajax event="keyup" execute="@this" render="msgtxtUserId"/>
      <f:validateLength minimum="2" />                                  
  </p:inputText>
  <p:message for="txtUserId" id="msgTxtIdUsuario" />
</h:panelGroup>
Run Code Online (Sandbox Code Playgroud)

先感谢您。

jsf primefaces jsf-2

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

标签 统计

jsf ×4

jsf-2 ×3

el ×2

primefaces ×2

binding ×1

clientid ×1

components ×1

datatable ×1