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

使用Update属性更新primefaces中的datatable

欧照
2023-03-14

我有一个表单,其中包含所需的数据,我使用了以下代码:

<p: inputText id = "salary" value = "#{paymentBean.payment.salary}" required = "true" requiredMessage = "#{msg ['REQUIRED.SALARY']}" />

在同一页面上有一个datatable,它包含我通过表单添加的对象(付款)。添加对象后,我使用以下代码对datable进行更新以添加新对象:

<p:commandButton action="#{paymentBean.addNewPayment()}" value="#{msg['BUTTON.ADD_NEW_ACCOUNT']}" update=":msg :payment_table add_salary_form">
    <f:param name="employeeId" value="#{param['employeeId']}" />
</p:commandButton>

我遇到的问题是,当数据没有输入,我单击按钮,更新完成,表显示为空!但是,验证消息正确地显示为强制数据。

datatable是

<p:dataTable id="payment_table" var="p" value="#{paymentBean.payments}" rows="15" paginator="true"
    paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15,20">

    <p:column headerText="#{msg['LABEL.SALARY']}">
        <h:outputText value="#{p.salary}" />
    </p:column>

    <p:column headerText="#{msg['LABEL.DATE_PAYMENT']}">
        <h:outputText value="#{p.paymentDate}">
            <f:convertDateTime pattern="dd/MM/yyyy HH:mm" />
        </h:outputText>
    </p:column>

    <p:column headerText="#{msg['LABEL.PAYMENT']}">
        <h:outputText value="#{p.paid == true ? 'Payé' : 'Non payé'}" />
    </p:column>
</p:dataTable>

我在CDI中使用,因为托管bean如下所示://import

import javax.enterprise.context.RequestScoped; import javax.faces.context.FacesContext; import javax.inject.Inject; import javax.inject.Named;

//类

@RequestScoped
private static final long serialVersionUID = 8709710274424668330L;

final static Logger logger = Logger.getLogger(PaymentBean.class);

List<Payment> payments = new ArrayList<Payment>();

private Payment payment;

@Inject
private IPaymentService paymentService;

public PaymentBean() {
    payment = new Payment();
}


public void addNewPayment() {
    //CODE TO ADD PAYMENT
}

//GETTERS AND SETTERS

}

共有1个答案

昌和悦
2023-03-14

你可以尝试几件事

1.-确保将此datatable放入表单标记中。
2.-当您在更新中使用“:”时,这意味着是绝对的,正确的命令将是update=“:form-id:payment_table”
3.-我建议您在id中只使用-而不是_,因为primefaces使用jquery,并且在某些情况下某些命令可能会失败,无法使用jquery搜索primefaces。更新类似于update=“:form-id:payment-table”
4。-创建包装并在按钮中更新包装。此操作的完整解决方案是:

<h:panelGrid id="grid-payment-table">
     <p:dataTable id="payment_table"
...
</h:panelGrid>

5.-将作用域更改为@viewscoped

 类似资料:
  • Hibernate的property元素具有update、insert属性,根据文档,它声明-http://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/mapping.html#mapping-声明属性 update,insert(可选-默认为true):指定映射列应包含在SQL update和/或insert语句中。将两者都设置为f

  • 因此,我在DynamoDB中有一项: 我想添加一个新的属性到上述项目,属性是: 现在,我在JS中使用AWS-SDK这样做: 但是,我得到一个错误: ExpressionAttributeValue包含无效值:一个或多个参数值无效:AttributeValue不能包含key:newAttr的空字符串 所以如果我是这样就可以了,但我不希望这个新属性是一个字符串,我希望它是一个列表。 那么我做错了什么?

  • update 修改表数据update($table, $data, $where) table [string] 表名. data [array] 修改的数据. where (optional) [array] WHERE 条件.[可选]Return: [number] 受影响的行数.你可以修改没有序列化的数组, 并且能使用 [+], [-], [*], [/] 来做运算 $database->u

  • update 修改表数据update($table, $data, $where) table [string] 表名. data [array] 修改的数据. where (optional) [array] WHERE 条件.[可选]Return: [number] 受影响的行数.你可以修改没有序列化的数组, 并且能使用 [+], [-], [*], [/] 来做运算 class Foo {

  • 问题内容: 我正在NHibernate中对单个属性执行标准更新。但是,在提交事务时,sql更新似乎设置了我映射到表上的所有字段,即使它们没有更改。当然这不是Nhibernate中的正常行为吗?难道我做错了什么?谢谢 问题答案: 这是正常现象。您可以尝试添加到类定义中以覆盖此行为。