Java 如何使用OGNL检查图像文件是否存在?

Java 如何使用OGNL检查图像文件是否存在?,java,struts2,ognl,Java,Struts2,Ognl,我正在创建一个JSP页面,并使用OGNL检查目录中是否存在图像文件,然后显示它,否则显示一个空白图像。有什么办法吗?在JSP中,您可以在s:if标记中创建一个OGNL表达式,并调用返回布尔值的操作方法。比如说 <s:if test="%{isMyFileExists()}"> <%-- Show the image --%> </s:if> <s:else> <%-- Show blank image --%> </s:e

我正在创建一个JSP页面,并使用OGNL检查目录中是否存在图像文件,然后显示它,否则显示一个空白图像。有什么办法吗?

在JSP中,您可以在
s:if
标记中创建一个OGNL表达式,并调用返回
布尔值的操作方法。比如说

<s:if test="%{isMyFileExists()}">
  <%-- Show the image --%>
</s:if>
<s:else>
  <%-- Show blank image --%>
</s:else>
或者直接使用
文件
属性,如果向其添加公共getter和setter

<s:if test="%{file.exists()}">
  <%-- Show the image --%>
</s:if>
<s:else>
  <%-- Show blank image --%>
</s:else>

有几种方法可以实现,但是您应该在操作中执行这种业务,并且只从JSP读取布尔值结果。或者至少将文件声明为操作属性,通过Getter公开它并从OGNL调用
.exist()
方法:

行动中

private File myFile
// Getter
在JSP中

<s:if test="myFile.exists()">
在myUtilClass

public static boolean doesThisFileExist(){
    return new File("someFile.jpg").exists();
}
public static boolean doesThisFileExist(String fileName){
    return new File(fileName).exists();
}
  • 或者使用参数

    <s:if test="@my.package.myUtilClass@doesThisFileExist('someFile.jpg')" />
    
  • 或者直接在OGNL中实例化它

    <s:if test="new java.io.File('someFile.jpg').exists()" />
    
    
    

  • 如果这个答案有帮助的话,你应该投票并接受它。
    public static boolean doesThisFileExist(String fileName){
        return new File(fileName).exists();
    }
    
    <s:if test="new java.io.File('someFile.jpg').exists()" />