【问题标题】:JSF Datatable - Editing Multiple InputText BoxesJSF 数据表 - 编辑多个 InputText 框
【发布时间】:2012-08-26 00:13:57
【问题描述】:

我目前有一个显示数据库中数据的数据表。我正在尝试为用户添加一种方法来编辑数据表的当前行(在数据表本身内部,没有外部表单或按钮),然后将其提交给支持 bean,然后更新数据库。

我有一些条件渲染,允许用户按下特定行上的编辑按钮,并将输出文本更改为输入文本框供他们编辑。

总体外观:

inputText1 inputText2 inputText3(保存按钮)

我遇到的问题是,除非用户在每个 inputText 上手动点击返回,否则 bean 中的值不会更新。除了调用数据库更新方法之外,保存按钮似乎没有做任何事情,而是使用表中的原始(未更新)数据。我已经为此工作了几个小时,似乎无法取得任何进展。

如果有人能指出我正确的方向,我将不胜感激。基本上我想要的是每行中的一个按钮(保存),它将捕获用户在框中输入的值。

示例代码:

<h:dataTable id="dt1" value="#{Results.players}" var= "item" bgcolor="#F1F1F1" border="10" cellpadding="5" cellspacing="3">
    <h:column>
        <f:facet name="header"><h:outputText value="ID"/></f:facet>
        <h:outputText value="#{item.id}"/>
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText value="Name"/>
        </f:facet>
        <h:outputText value="#{item.name}" rendered="#{not item.editable}"/>
        <h:form>
            <h:inputText value="#{Results.currentName}" rendered="#{item.editable}" immediate="true"/> 
        </h:form>
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText value="Department"/>
        </f:facet>
        <h:outputText value="#{item.department}" rendered="#{not item.editable}"/>
        <h:inputText value="#{Results.currentDepartment}" rendered="#{item.editable}" immediate="true"/> 
    </h:column>

还有按钮。编辑将正常显示,点击保存按钮时将显示该行将呈现为输入文本。

<h:column>
    <f:facet name="header">
        <h:outputText value="Edit"/>
    </f:facet>
    <h:form>
        <h:commandLink value="Edit" rendered="#{not item.editable}" action="#{Results.editPlayers(item)}"/>
        <h:commandLink value="Save" rendered="#{item.editable}" action="#{DBupdate.updatePlayers(item)}"/>
    </h:form>
</h:column>

【问题讨论】:

    标签: jsf datatable


    【解决方案1】:

    在这些情况下更正常的一个问题是不更新屏幕字段,强制jsf更新字段的一种方法如下:

    <h:commandLink ..>
        <f:ajax event="click" render="@all" execute="@this" />
    </h:commandLink>
    

    或者

    <h:commandLink ..>
        <f:ajax render="@all" execute="@form" />
    </h:commandLink>
    

    问候,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 2013-02-23
      • 2023-03-22
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 2013-09-21
      相关资源
      最近更新 更多