首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JSF Datatable -编辑多个InputText框

JSF Datatable -编辑多个InputText框
EN

Stack Overflow用户
提问于 2012-08-26 00:13:58
回答 1查看 2.1K关注 0票数 0

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

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

一般外观:

inputText1 inputText2 inputText3 (保存按钮)

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

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

示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

还有按钮。编辑将正常显示,当单击Save按钮时,该行将呈现为inputtext。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2012-08-27 14:09:16

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<h:commandLink ..>
    <f:ajax event="click" render="@all" execute="@this" />
</h:commandLink>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<h:commandLink ..>
    <f:ajax render="@all" execute="@form" />
</h:commandLink>

致以敬意,

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12126702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文