首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅使用素数面DataTable的JSF的操作审计

仅使用素数面DataTable的JSF的操作审计
EN

Stack Overflow用户
提问于 2011-03-04 19:37:17
回答 2查看 2.2K关注 0票数 0

我目前正在审核一个项目的用户操作,我有以下问题。

有一个名为“审计日志”的功能,它列出了用户在我的系统上执行的一组完整的已审计操作。每当某个用户列出审计日志时,也需要对此操作进行审计。

审计日志的JSF页面如下所示:

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
<p:dataTable var="auditEntry"
             value="#{auditList.allAuditEntries}"
             paginator="true"
             rows="10"
             paginatorPosition="top"
             dynamic="false">

我的后盾豆:

代码语言:javascript
复制
public List<AuditEntry> getAllAuditEntries()
    {
        auditFacade.createAuditEntry(function that creates an audit entry);
        return allAuditEntries;
    }

对后台bean的命名操作执行审核的问题如下:

需要一种注册方式,只需查阅一次审计日志,而不是像在图像上显示的那样。有什么想法吗?是否可以使用JSF或相关标记来保证上面的内容?

TL;DR在JSF页面上只有一个PrimeFaces DataTable,如何审计这种页面的打开,使审计注册在单行上,而不是像在图像中所显示的那样。

Pd:用时间差过滤所有重复的审计条目是不可行的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-04 20:41:26

解决了我的问题。

现在支持bean是ViewScoped,我刚刚创建了一个布尔变量,它确保每个Bean ViewScope循环只进行一次审计。

代码语言:javascript
复制
public List<AuditEntry> getAllAuditEntries()
    {
        if (!isViewed)
        {
            isViewed = true;
            auditFacade.createAuditEntry(
                __creates Audit Entry here__);
        }

        return allAuditEntries;
    }
票数 0
EN

Stack Overflow用户

发布于 2011-03-04 19:53:15

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

致以问候。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5198409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档