Использование тега <c: out> для установки var в jsp с помощью тега <c: set>
В моем jsp в приложении Struts 1 я пытаюсь использовать тег c:set, чтобы установить переменную из моего списка в отображаемой таблице.
Каждая строка в таблице имеет значение (100 или 200), которое определяет, какой пользователь добавил запись. Я хочу отображать редактирование / удаление только для определенного пользователя (100).
Я пытаюсь установить значение и сравнить его со 100, чтобы определить, какие строки должны иметь редактирование / удаление.
У меня проблема в том, что rowUser не получает значение из моего списка.
Я знаю, что в списке есть значения, потому что таблица отображается, но они показывают все строки, как будто они не равны 100.
То, что я до сих пор это:
<c:set var="rUser"><c:out value="${myList.rowUser}" /></c:set>
<c:choose>
<c:when test="${rUser == 100}">
<display:column property="startDate" title="Start Date" width="18%" decorator="com.mhngs.util.DisplayTagDateWrapper" sortable="true" headerClass="sortable"/>
<display:column property="endDate" title="End Date" width="18%" decorator="com.mhngs.util.DisplayTagDateWrapper" sortable="true" headerClass="sortable" />
<display:column property="reason" title="Comments" width="17%" sortable="true" headerClass="sortable" />
<display:column media="html" width="17%"><a href="#" onClick="javascript:editEntry('<c:out value="${myList.Id}"/>')">Edit</a></display:column>
<display:column media="html" width="15%"><a href="#" onClick="javascript:deleteEntry('<c:out value="${myList.Id}"/>')">Delete</a></display:column>
</c:when>
<c:otherwise>
<display:column property="startDate" title="Start Date" width="18%" decorator="com.mhngs.util.DisplayTagDateWrapper" sortable="true" headerClass="sortable"/>
<display:column property="endDate" title="End Date" width="18%" decorator="com.mhngs.util.DisplayTagDateWrapper" sortable="true" headerClass="sortable" />
<display:column property="reason" title="Comments" sortable="true"/>
</c:otherwise>
</c:choose>
Любая помощь будет принята с благодарностью.
1 ответ
Если вы хотите назначить myList.rowUser
к атрибуту rUser
, просто используйте
<c:set var="rUser" value="${myList.rowUser}"/>
Тем не менее, зачем использовать дополнительный атрибут для этого, а не использовать напрямую myList.rowUser
?
<c:when test="${myList.rowUser == 100}">
Наконец, проблема в том, что тег display вычисляет столбцы для отображения на первой итерации. В следующих итерациях он просто изменяет значения, отображаемые в каждом столбце. Вместо того, чтобы не отображать последние два столбца, когда атрибут равен 200, вы должны отобразить их, но оставить их пустыми. Короче говоря, тест должен быть внутри тега display:column, а не снаружи:
<display:column ...> if row = 100, display button </display:column>