Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF-Ajax重渲染器<;h:textInput…>;关于变化_Jsf_Jsf 2 - Fatal编程技术网

JSF-Ajax重渲染器<;h:textInput…>;关于变化

JSF-Ajax重渲染器<;h:textInput…>;关于变化,jsf,jsf-2,Jsf,Jsf 2,我正在尝试获得一个h:textInput以在更改时重新加载,我已经用a4j:ajax和f:ajax进行了尝试 使用a4j:ajax时: <h:panelGroup id="xyzPG"> <ui:repeat var="var" ... > ... <h:inputText id="#{idController.getIdXYZ(var.id)}" value="#{someModel.value}" size="3" style

我正在尝试获得一个h:textInput以在更改时重新加载,我已经用a4j:ajax和f:ajax进行了尝试

使用a4j:ajax时:

<h:panelGroup id="xyzPG">

<ui:repeat var="var" ... >
   ...
  <h:inputText id="#{idController.getIdXYZ(var.id)}" 
   value="#{someModel.value}" 
   size="3" 
   styleClass="#{errorController.getErrorStateStyleId(idController.getIdXYZ())}">
   <a4j:ajax event="change" render="xyzPG" listener="#{listener.doSomeStuff}" />
  </h:inputText> 
  ...
</ui:repeat>  
</h:panelGroup>

因此,我们使用ui:repeat的offset和step属性。

在没有看到支持bean代码的情况下,我认为您应该使用

<h:inputText id="#{idController.idXYZ}"

  • 根据设计,您无法使用类似于
    的渲染时间标记动态生成
    id
    属性
    • 为了视图构造和ajax更新的目的,在呈现视图之前,组件的
      id
      s必须在视图构造期间可用<代码>
    已经满足了其子组件ID的唯一性。但是,如果需要控制ID,则需要使用编译时标记处理程序,如


    这假设
    xyzPG
    直接包含在

    中。您是否尝试过其他evens,如
    blur
    onkeyup
    等?您动态使用
    id
    会让我的眼睛流血。您可以使用下面的答案来避免与此相关的所有问题:我认为您遇到了视图与渲染时间的问题。没有
    c:repeat
    -您有
    ui:repeat
    c:forEach
    吗?如果是后者,请参见wupps(典型错误),正如您正确地指出它的ui:重复当您编写代码而不是复制原始文件时发生的情况。关于动态id-我也不太满意,但由于项目特定的限制,该决定是由项目架构师做出的,因此我们一直坚持这一点。我已经添加了解释,解释了为什么我们使用ui:Repeat id解析正确-当您使用el符号()或(param)你必须写完整的方法,包括get。谢谢你的详细回答。我通过简单地使用rich:datagrid解决了这个问题。
    ---------------------------- 
    | dataSet1     | dataSet 2 |
    ----------------------------
    | dataSet3     | dataSet 4 |
    etc...
    
    <h:inputText id="#{idController.idXYZ}"
    
    <h:inputText id="#{idController.getIdXYZ()}" 
    
      <c:forEach items="#{idController.itemsList}" var="theVar">
         <h:inputText id="#{idController.getIdXYZ(theVar.id)}" value="#{someModel.value}" size="3" styleClass="#{errorController.getErrorStateStyleId(idController.getIdXYZ())}">
             <a4j:ajax event="change" render="xyzPG" listener="#{listener.doSomeStuff}" />
         </h:inputText> 
      <c:forEach/>
    
      <f:ajax event="change" render=":form1:xyzPG" listener="#{listener.doSomeStuff}"/>