2013-07-19 68 views

回答

0

在JSP中,您可以在s:if標記中創建一個OGNL表達式,並調用返回boolean的操作的方法。例如

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

在行動

public class MyAction extends ActionSupport { 

    private File file; 
    //getter and setter here 


    public boolean isMyFileExists throws Exception { 
    if (file == null) 
     throw new IllegalStateException("Property file is null");  
    return file.exists(); 
    } 
} 

或直接使用file財產,如果你添加公共getter和setter它

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

你應該給予好評,並接受這個答案,如果它幫助。 –

0

有可能在幾個方面,但你應該在Action中執行此類業務並從JSP讀取僅布爾型結果。或者至少聲明文件作爲Action屬性,通過一個getter揭露它,並調用從OGNL .exist()方法:

在行動

private File myFile 
// Getter 

在JSP

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

從記錄上來看,其他可能的方式(不用於此目的,只是爲了更好地探索OGNL功能):

  1. 呼叫從OGNL一個靜態方法(需要struts.ognl.allowStaticMethodAccess設置爲truestruts.xml

    <s:if test="@[email protected]()" /> 
    

    和myUtilClass

    public static boolean doesThisFileExist(){ 
        return new File("someFile.jpg").exists(); 
    } 
    
  2. 或參數

    <s:if test="@[email protected]('someFile.jpg')" /> 
    

    和myUtilClass

    public static boolean doesThisFileExist(String fileName){ 
        return new File(fileName).exists(); 
    } 
    
  3. 或在OGNL直接

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