当前位置: 首页 > 知识库问答 >
问题:

如果没有提供action属性,h:CommandButtoon和f:Ajax不会呈现h:DataTable

龙星辰
2023-03-14

我有一个带有dataTable的followig表单和一个带有操作表数据的输入字段的编辑部分。我想在单击commandButton后刷新datatable:

<f:ajax>
<h:panelGroup id="timesheet_panel">
    <h:dataTable id="datatable"
            value="#{timesheetController.myTimeSheet}" var="child">
    ......
        <h:column>
        <!-- update editor panel data -->
        <h:commandLink
            action="#{timesheetController.load(child.item['$uniqueid'])}">
                    <h:outputText value="#{message.edit}" />
            <f:ajax
                render=":#{component.parent.parent.parent.parent.clientId}:editorpanel" />
        </h:commandLink>
    </h:column>

    </h:dataTable>

    <!-- Editor  -->
    <h:panelGroup id="editor">
        <h:inputText value="#{timesheetController.workitem.item['_category']}" />

        <h:commandButton action="/mypage"
                    actionListener="#{timesheetController.process('10')}"
            value="Update Tabledata">
            <f:ajax render="datatable" />
        </h:commandButton>
    </h:panelGroup>
</h:panelGroup>
</f:ajax>

注意:我有一个带有h:commandLink的h:column来更新表下方编辑器面板中显示的数据。

问题是:为什么需要为编辑器面板中的commandButton提供action属性?如果我没有提供action属性,f:ajax render=“dataTable”将不会刷新dataTable。所以在我看来,这里只能使用actionListener来更新后端数据。只有当操作的结果等于当前页时,action方法才会起作用。有人能解释这种行为吗?我正在研究GlassFish 3.1.2

共有1个答案

林子石
2023-03-14

要刷新表,至少需要将bean放入@ViewScoped中。否则,你的蜜蜂将在设置值后重新创建,这样你就可以到达相同的点。

 类似资料:
  • 问题内容: 我尝试制作一个写CSS和HTML的PDF,但是我的CSS没有出现在我的PDF中。仅考虑字体大小和字体颜色。 我给你代码(对不起,这有点长…) 问题答案: 首先,您应该注意PDF和HTML以及几乎没有共同点的不同格式。如果TCPDF允许您使用HTML和CSS提供输入数据,那是因为它为这两种语言实现了一个简单的解析器,并试图找出如何将其转换为PDF。因此,合乎逻辑的是,TCPDF仅支持HT

  • 下面的例子很好用,但是我在基本概念上有点混乱。

  • 问题内容: 我想在表单中具有动态操作属性。我有一个密码 Angular确实会用实际值替换,但不会使用新值添加属性。我该如何解决? 我也尝试过 它确实可以在Angular中工作,但不能在更高版本中工作 带有角度版本的JSFiddle ,http://jsfiddle.net/fizerkhan/s8uCT/5/ 带有角度版本的JSFiddle ,http://jsfiddle.net/fizerkh

  • 我有一个非常简单的Java web应用程序,其中有2个jsp文件(索引和测试)。部署描述符应该提供一些线索: 这个项目是由Maven-WebApp原型创建的,POM中只有一个依赖项: 我在IntelliJ中有两个运行配置,一个用于Tomcat 7.0,一个用于Glassfish 3.1.2.2 当pom如上时,应用程序可以很好地部署到两个服务器上。但当我移除: 部署在Tomcat中失败,但在Gla

  • 这是我的小片段。 在中,我有以下值 name和version是将被注入的gradle的属性。 但是,当我从Intellij开始使用springBoot运行程序时,我得到以下错误。 当我按如下方式替换application.properties时,它在intellij中的spring boot runner中工作,但gradle构建失败 我如何告诉spring boot忽略任何丢失的占位符值? 编辑

  • 问题内容: 我有一个类MyThread。在那我有一个方法示例。我试图从相同的对象上下文中运行它。请看一下代码: 看起来很简单,不是吗。但是当我运行它时,我得到这个错误 现在,我就在那里使用该方法。那怎么了 请帮忙 编辑:这是堆栈跟踪 我这样称呼它 抱歉,我无法发布redisOps类代码。但我可以向您保证,它的效果很好 问题答案: 您的缩进已弄糟,并且您混用了制表符和空格。运行脚本进行验证。