2

我对 Rich:dataTable 有一个奇怪的问题:

我的主页项目有一些需要身份验证才能访问的目录。它通过基于表单的登录来完成。工作正常,正如预期的那样。

在一页上是一个rich:dataTable。即使在这里一切正常。但是当我尝试转到另一个页面(在同一目录中)时,我必须再次登录我使用 h:graphicImage 标签的表:

<rich:dataTable  id="stdlist" rowClasses="tbleven,tblodd" value="#{sbasSS.SMStatuslist}" var="loc" 
  columnClasses="centertd, centertd"
  headerClass="tblheader" reRender="true">
    <rich:column>
        <f:facet name="header" >
            <h:outputText value="mobilnummer"/>
        </f:facet>    
        <h:outputText value="#{loc.destination}"/> 
    </rich:column>
    <rich:column>
        <f:facet name="header" >
            <h:outputText value="lev. status"/>
        </f:facet>    
        <h:graphicImage value="/Teacher/flags/#{loc.status}.gif" />
    </rich:column>  
</rich:dataTable>

图像按应有的方式显示。没有失败的路径左右。但我被淘汰了,会话无效。

如果我改变

<h:graphicImage value="/Teacher/flags/#{loc.status}.gif" />

进入

<h:outputText value="#{loc.status}"/>

显示预期的文本。导航工作。我不必再次登录。

知道这可能是什么吗?

最好的问候拉尔夫

4

1 回答 1

0

事实上,HTML 文档中的所有 URL 引用(如图像、脚本、CSS 文件等)都是由一个全新且不同的 HTTP 请求单独请求的。这些症状表明您Filter在 web 应用程序中进行了过度的身份验证,它没有正确完成其工作,并且由于某种原因,一旦请求图像,整个会话就会失效。

根据迄今为止提供的信息,这就是所有可以告诉/猜测的内容。您的下一步将是调试该过滤器并投入更多时间来了解 HTML、HTTP 和网络浏览器的一般工作方式。这个问题至少与 RichFaces 数据表无关。<h:graphicImage>当页面中只有带有硬编码#{loc.status}值的a 时,您肯定会遇到完全相同的问题。

于 2012-09-07T15:23:13.680 回答