2011-10-20 59 views
0

我想從Java類傳遞一個異常字符串到一個taglib。我從請求中除去異常,並將其傳遞到一個taglib中,該頁面使用錯誤文本在頁面上生成一個div。但是,我收到一個錯誤,說「電子無法解決」以下是我的代碼。如何在taglib scriptlet中使用java類?

<% MyException e = (MyException) request.getAttribute(MyFields.EXCEPTION); 
    if (e != null) { 
     String warningLevel = "none"; 
     if(e.getEndUserMessage().contains("warningLevel")){ 
      warningLevel = e.getEndUserMessage().substring(e.getEndUserMessage().indexOf("warningLevel=\"") + 14, e.getEndUserMessage().indexOf("\"")); 
     } 
%> 

<e:errorcontainer warningLevel="<%=warningLevel %>"> 
    <e:error propertyFile="${SSOFields.ERROR_PROPERTIES}" 
      alertProperty="<%=e.getEndUserMessage()%>"> //This line is where e cannot be resolved 
    </e:error> 
</e:errorcontainer> 
<% 
    } 
%> 

我還在學習關於jsp的東西,所以任何幫助都會很棒。先謝謝你。

回答

0

也許你的錯誤不是關於變量'e',而是taglib'e'?例如,你沒有在JSP文件的頂部聲明它?

0

你有兩個潛在的「e」事情無法解決 - 你的taglib的異常和命名空間。你可能會有bug導入taglib到你的頁面或應用程序命名空間,你可以通過重命名你的異常變量來快速消除它。

+0

即使我切換變量名,我仍然得到該變量不能解決在我設置alertProperty行。如果我創建一個字符串變量並將endUserMessage設置爲該變量,並將該字符串傳遞給alertProperty,也會發生這種情況。然後它說這個字符串不能被解析。 – banjokaboom

+0

對不起 - 不能再幫你了,自從我寫了一個taglib已經有一段時間了。如果您有選擇使用什麼模板技術,我不會選擇jsp和自定義taglibs,因爲Freemarker有更好的選擇。 JSP與servlet體系結構緊密相關,並帶有諸如請求和響應之類的隱含變量,因此它需要討厭的黑客做一些簡單的事情,比如模板和HTML電子郵件。此外,您需要成爲一名java開發人員編寫taglib,而智能html開發人員可以編寫freemarker宏。 – asparagino

相關問題