2010-12-20 4 views
0

最新のLiferayポートレット、またはこのポートレットで使用しているJSPに問題があります。 私は、削除ボタン付きのページに表示される文字列を含む文字列配列を使用しています。これらの各ボタンは、actionURLを呼び出して、選択したデータを別の関数に送信します。 多分それは私がちょうど私のサンプルコードを見て、何をしたいかを理解することは簡単です:Liferay JSPでJSTL変数を文字列にキャストする方法は?

<c:forEach var="name" items="<%=myNames %>">  
    <liferay-portlet:actionURL name="deleteName" var="${name}"> 
     <liferay-portlet:param name="myName" value="${name}" /> 
    </liferay-portlet:actionURL>  
    <c:out value="${name}" /> 
    <liferay-ui:icon-delete label="<%= true %>" url="${name}"/> 
</c:forEach> 

たぶん、あなたはすでに私の問題が何であるかに気づい:actionURLにおけるVAR-属性は文字列である必要があります。だから、この例はうまくいきません。 私の質問は今どうなっているのですか?$ name変数を動的にキャストしてactionURLに設定し、後でアイコンで呼び出すにはどうすればいいですか?

ありがとうございます。

+1

これはトップの例か*実際のコードですか? 'items =" <%=myNames%> "は' c:forEach'では動作しません。基本的には、完全な 'List 'や 'String []'ではなく、 'String.valueOf(myNames)'を 'items'属性に渡しているので、' c:forEach'はそれを繰り返し処理することはできません。スクリプトレットとELを混在させないでください。 ELだけを使用してください。 – BalusC

+0

これは正しく表示され、期待どおりに表示されるため、これが機能しないことを知っておいてよかったです。 ;)そして私はLiferayのELだけでactionURLを定義する代わりの方法を知りません。 – Bob

答えて

2
<% 
List<String> names = new ArrayList<String>(); 
names.add("me"); 
names.add("myself"); 
names.add("I"); 

pageContext.setAttribute("names", names); 
%> 

<c:forEach var="name" items="${names}"> 
    <portlet:actionURL var="deleteURL"> 
     <portlet:param name="myName" value="${name}" /> 
    </portlet:actionURL> 

    <liferay-ui:icon-delete label="<%= true %>" url="${deleteURL}"/> 
</c:forEach> 

これは機能しますか?

関連する問題