2009-09-21 46 views
1

我有JSP標記問題 - 我如何在Java代碼中插入屬性值? 這是我的代碼:JSP標記問題 - Java代碼爲值

<%! 
    String ii = new String(); 
%> 

    <% 

    try { 
     String id = request.getParameter("a"); 
     int i = Integer.valueOf(id); 
     ii = String.valueOf(i); 
    } catch (Exception e) { 
     response.sendError(500); 
    } 

    %> 
      <div style="float:right;margin-right:20px;"> 
       <strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br> 
      </div> 

如果我運行它,出現錯誤500 - stack 在48行是這樣的代碼:

<strong>From: </strong> <em><post:ShowPm postId="<%=ii%>" /></em><br> 

我使用Struts 1和JSP與自己的標記(被我的標籤)。

回答

6

聽起來像是你需要改變你的TLD,這樣屬性可以接受的表達式:

<attribute> 
     ... 
     <rtexprvalue>true</rtexprvalue> 
     ... 
    </attribute> 
+1

ahhh你快:D – n00b 2009-09-21 18:09:50

+0

不錯,泰克很多! – wokena 2009-09-21 18:17:19

1

只是想給這個JSP一些普遍的反饋。

你意識到變量「ii」不會是線程安全的嗎? ii是一個類變量。 只有一個servlet實例被創建,並且多個線程通過它運行。 因此,您可能有多個線程編輯此值並打印出不一致的結果。

解決方案:將其聲明爲<%scriptlet%>標記中的服務方法的局部變量,而不是<%!聲明%>

只是想知道這段代碼的重點是什麼?將一個參數變成一個數字,然後再回來?這是否有一些嘗試驗證?對我來說,這似乎是一大堆混亂不必要的工作。特別是把它變成一個String。 如果它需要是一個整數,爲什麼你的標籤不是一個整數? 或者爲自己做驗證?