java - 仅使用 Primefaces 数据表对 JSF 进行操作审核

标签 java jsf datatable primefaces audit

我目前正在审核项目上的用户操作,但遇到以下问题。
有一个名为“审核日志”的功能,它列出了用户在我的系统上执行的完整审核操作集。每当某个用户列出审核日志时,此操作也需要审核。
制作审核日志的 JSF 页面如下:

<ui:composition ...>
    <ui:define name="content">
        <h:form id="audit_List">
            <h:panelGrid columns="1">
                <p:breadCrumb>
                    <p:menuitem value="#{i18n['xxx']}" url="index.xhtml" />
                    <p:menuitem value="#{i18n['yyy']}"/>
                </p:breadCrumb>
                <p:panel header="#{i18n['zzz']}">
                    <p:dataTable var="auditEntry"
                                 value="#{auditList.allAuditEntries}"
                                 paginator="true"
                                 rows="10"
                                 paginatorPosition="top"
                                 dynamic="false">
                        <p:column sortBy="#{i18n[auditEntry.category]}"
                                  filterBy="#{i18n[auditEntry.category]}">
                            A column here
                        </p:column>
                        <p:column sortBy="#{auditEntryDescriptionI18N[auditEntry]}"
                                  filterBy="#{auditEntryDescriptionI18N[auditEntry]}">
                            A column here
                        </p:column>
                        <p:column sortBy="#{auditEntry.username}"
                                  filterBy="#{auditEntry.username}">
                            A column here
                        </p:column>
                        <p:column id="problematicColumn" 
                              sortBy="#{auditEntry.occurredOn}"
                              filterBy="#{auditEntry.occurredOn}">
                              <f:facet name="header">
                                       <h:outputText value="#{i18n['aaa']}"/>
                              </f:facet>
                              <h:outputText value="#{auditEntry.occurredOn}">
                                            <f:convertDateTime type="date"
                                                   ___I suspect pattern is giving the problem..___
                                                  pattern="{auditList.listDateFormat.stringValue}"
                                                  timeZone="#{sessionBean.serverTimeZone}"/>
                               </h:outputText>
                         </p:column>
                    </p:dataTable>
                </p:panel>
            </h:panelGrid>
        </h:form>
    </ui:define>
</ui:composition>

我当前对特定代码片段进行了审核操作:

<p:dataTable var="auditEntry"
             value="#{auditList.allAuditEntries}"
             paginator="true"
             rows="10"
             paginatorPosition="top"
             dynamic="false">

我的支持 bean:

public List<AuditEntry> getAllAuditEntries()
    {
        auditFacade.createAuditEntry(function that creates an audit entry);
        return allAuditEntries;
    }

对支持 bean 的命名操作执行审核的问题如下: Flooded Audit Log 1 Flooded Audit Log 2

需要一种方法来注册一次审核日志,而不是像图像上显示的那样。有任何想法吗?有什么方法可以使用 JSF 或相关标签来保证上述内容?

TL;DR JSF 页面上只有一个 PrimeFaces 数据表,如何以在单行上进行审核注册的方式审核此类页面的打开,而不是如图所示。
Pd:重新编辑所有重复的审计条目并按时间差过滤它们是不可行的

最佳答案

如果可以将 ManagedBean 放入 RequestScope 中,您可以在 bean 的构造函数中调用 createAuditEntry 方法。然后每个请求仅调用一次。

问候。

关于java - 仅使用 Primefaces 数据表对 JSF 进行操作审核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5198409/

相关文章:

codeigniter - 数据表为第 0 行请求未知参数 '0'

java - 方法有时会捕获一个 org.hibernate.exception.JDBCConnectionException,为什么?

java - 一个人如何既能够使用 IntelliJ 来管理项目的配置,又能拥有一个没有任何 IntelliJ 元数据的 VCS 存储库?

java - Woodstox stax 和 java stax 冲突

java - 启动 Sonar 服务 - java.lang.OutOfMemoryError : GC overhead limit exceeded Ubuntu

jsf - ui :decorate and ui:include? 之间真正的概念区别是什么

css - 更改 Accordion 面板选项卡的颜色

javascript - 如果在 primefaces 数据表中添加新行,如何检测表单的变化

jquery - 访问 Angular 2 组件内的 JQuery 数据表

ajax - 如何在单击 p :dataTable through ajax 中的“全选”复选框时调用方法