簡體   English   中英

僅帶有Primefaces數據表的JSF上的操作審核

[英]Action Audit on a JSF with just a Primefaces DataTable

我目前正在審核項目上的用戶操作,並且遇到以下問題。
有一個稱為“ 審核日志”的功能,該功能列出了用戶在我的系統上執行的完整的“審核”操作集。 每當某個用戶列出了審核日志時,也需要對該操作進行審核。
制作審核日志的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">

我的后援豆:

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

對后備bean的命名操作執行審核的問題如下: 泛濫的審核日志1泛濫的審核日志2

需要一種方法來注冊一次查詢審核日志 ,而不是圖像中所顯示的那樣。 有任何想法嗎? 有什么方法可以保證上述效果的JSF或相關標簽?

TL; DR在JSF頁面上只有一個PrimeFaces DataTable,如何以一種使審計注冊位於一行的方式來審計該頁面的打開,而不是如圖所示。
Pd:重新編輯所有重復審計條目(按時差過濾它們)是不可行的

如果可以將ManagedBean放入RequestScope中,則可以在bean的構造函數中調用createAuditEntry方法。 然后,每個請求僅調用一次。

問候。

解決了我的問題。
支持bean現在是ViewScoped ,我剛剛創建了一個布爾變量,以確保每個Bean ViewScope周期僅執行一次審核。

public List<AuditEntry> getAllAuditEntries()
    {
        if (!isViewed)
        {
            isViewed = true;
            auditFacade.createAuditEntry(
                __creates Audit Entry here__);
        }

        return allAuditEntries;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM