小编Ace*_*unk的帖子

文件下载后更新组件

我正在使用Primefaces TabView,CommandButton和FileDownload来下载日志文件.下载日志文件后,我想提供从服务器删除日志内容的选项.

最初,删除日志文件按钮(deleteEventLogButton)已禁用,并具有一个自定义标题,指出"删除日志 - 需要导出".导出日志后,应启用该按钮,标题应显示"删除日志".

我遇到的问题是仍然禁用删除日志文件按钮,即使在导出事件成功完成后,标题仍为"删除日志 - 需要导出".

我的猜测是在fileDownload值之前调用exportEventLogButton-> Update ="deleteEventLogButton".

一旦我导出了日志,我就可以点击'F5'并刷新页面并启用deleteEventLogButton以显示正确的标题.

JSF - Snippet

<p:tabView id="logView">
    <p:tab id="eventLogTab" title="Security Events">
        <p:panelGrid ...>

            <p:commandButton id="exportEventLogButton" icon="ui-icon-disk" styleClass="c25" ajax="false" title="Export Log" disabled="#{empty managedCmsLogsBean.eventLogEntityList}" update="deleteEventLogButton">
                <p:fileDownload value="#{managedCmsLogsBean.exportEventLogFiles()}"/>
            </p:commandButton>

            <p:commandButton id="deleteEventLogButton" icon="ui-icon-trash" styleClass="c25" ajax="false" title="#{managedCmsLogsBean.deleteEventLogCaption}" disabled="#{! managedCmsLogsBean.eventLogExported}" action="#{managedCmsLogsBean.clearEventLogs()}" update="eventLogTab" />    

        </p:panelGrid>

        <p:dataTable value="#{managedCmsLogsBean.eventLogEntityList}" ...>
            ...
        </p:dataTable>

    </p:tab>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)

Backing Bean - Snippet

private boolean eventLogExported;

public StreamedContent exportEventLogFiles() {
    eventLogExported = true;
    return logFileUtility.exportSecurityEventLog(eventLogEntityList, eventLogStartDate, eventLogStopDate);
}

public boolean isEventLogExported() {
    return eventLogExported; …
Run Code Online (Sandbox Code Playgroud)

download primefaces jsf-2

11
推荐指数
2
解决办法
1万
查看次数

注销时清除客户端SSL状态(使用双向SSL)

我正在进行一个需要双向身份验证才能向服务器标识用户的项目。然后,服务器根据用户身份显示该用户可用的信息和选项。

我在主模板上放置了“退出”链接。这样做的目的是使所有内容无效/清除,然后将它们重定向到显示“您已退出”的不安全页面。使用“登录”按钮,将其重定向回登录页面。

登录页面应提示用户输入其证书(第一次)。但是,当您单击“注销”页面上的“登录”按钮时,它将使用先前用户的SSL状态,并且不会出现证书提示。

我真正需要的是一种注销方法(最好不要使用Java脚本),该方法将清除所有缓存,使所有会话对象无效,并清除SSL状态。

到目前为止,这是我所做的:

1.)在web.xml中设置一个安全约束,以强制所有页面匹配模式“ / secure / *”只能通过https访问。这很好用...

2.)创建了一个防止缓存的过滤器...

3.)创建了退出功能...

任何和所有帮助将不胜感激!

过滤器代码:

@WebFilter("/secure/*")
public class NoCacheFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
        httpResponse.setHeader("Cache-Control", "no-cache,no-store,must-revalidate");
        httpResponse.setHeader("Pragma", "no-cache");
        httpResponse.setDateHeader("Expires", 0L); // Proxies.
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {}
}
Run Code Online (Sandbox Code Playgroud)

登出功能

public void signOut() {
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();

    // Log …
Run Code Online (Sandbox Code Playgroud)

ssl-certificate java-ee jsf-2

5
推荐指数
0
解决办法
1511
查看次数

标签 统计

jsf-2 ×2

download ×1

java-ee ×1

primefaces ×1

ssl-certificate ×1