[英]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的命名操作執行審核的問題如下:
需要一種方法來注冊一次查詢審核日志 ,而不是圖像中所顯示的那樣。 有任何想法嗎? 有什么方法可以保證上述效果的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.