【问题标题】:JSF: inputText with converter in dataTable ProblemJSF:dataTable 中带有转换器的 inputText 问题
【发布时间】:2011-06-29 02:12:27
【问题描述】:

我使用自定义转换器为 h:dataTable 中的单元格构建了一个 h:inputText。 输入文本可以转换,如果我重新渲染整个表格,可以显示转换后的文本。

问题是,整个表格的重新渲染会释放下一个输入框的焦点。我尽量解释清楚。

我遇到的问题:

  1. 表格单元格中的用户输入数据。
  2. 用户按下Tab键,跳转到表格中的下一个输入框。
  3. 同时刚刚输入的文字会立即转换并显示出来。
  4. 但是由于整个表格的重新渲染,用户失去了下一个输入框的焦点。

我想要的是:

  1. 表格单元格中的用户输入数据。
  2. 用户按下Tab键,跳转到表格中的下一个输入框。
  3. 同时刚刚输入的文本应该立即转换并显示。
  4. 用户不应失去下一个输入框的焦点(可能使用部分重新渲染)。

我也尝试为每个单元格分配 id 以进行部分重新渲染,但我不知道如何在 dataTable 中执行此操作。

谁有解决问题的办法?谢谢。

【问题讨论】:

    标签: jsf datatable rerender


    【解决方案1】:

    只需在f:ajaxrender属性中引用输出组件的id即可。

    <h:dataTable value="#{bean.model}" var="item">
        <h:column>
            <h:inputText value="#{item.value}">
                <f:ajax event="blur" render="output" />
            </h:inputText>
        </h:column>
        <h:column>
            <h:outputText id="output" value="#{item.value}" />
        </h:column>
    </h:dataTable>
    

    【讨论】:

      【解决方案2】:

      试试这个:

      <h:inputText value="#{item.value}">
        <f:ajax event="blur" render="@this" execute="@this"/>
      </h:inputText>
      

      execute 属性应该触发转换器。这样就不需要单独的 outputText。

      【讨论】:

      • 我知道他在某处显示转换后的文本,但不在同一个组件内。
      • 感谢您的回复。我确实想在输入字段中显示转换后的文本。我使用的是 jsf 1.2 而不是 2.0,所以除了 @this 之外还有其他解决方案吗??
      • 可以直接参考inputText的id。只需将“@this”替换为 inputText 字段的 id。
      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 2011-05-31
      • 1970-01-01
      • 2021-03-02
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多