Получение значения из строки в таблице Struts2 при использовании Displaytag - PullRequest
1 голос
/ 18 августа 2010

Я знаю, что это в некоторой степени повторная публикация, но я чувствую, что повторная публикация моего вопроса прояснит ситуацию.

Вот код моей таблицы на моей странице JSP:

<display:table name="table" pagesize="25" requestURI="">
<display:column title="Action" >
    <s:form theme="simple">
        <s:hidden key="cpc" />
        <s:submit action="remove" value="Remove" 
        onclick="return confirm('Are you sure you want to delete this item?');"/>
        <s:submit action="displayEdit" value="Edit"/>
    </s:form>
</display:column>
<display:column property="cpc" title="CPC" sortable="true" headerClass="sortable"/>
<display:column property="companyName" title="Company Name" sortable="true" headerClass="sortable"/>
<display:column property="eventType" title="Event Type" sortable="true" headerClass="sortable"/>
<display:column property="industryType" title="Industry Type" sortable="true" headerClass="sortable"/>
<display:column property="previousEvents" sortable="true" headerClass="sortable"/>
<display:column property="creditNotifications" sortable="true" headerClass="sortable"/>
<display:column property="interimNotifyEnterprise" sortable="true" headerClass="sortable"/>
</display:table>

Источником для таблицы является ArrayList, где TableRow - это класс-оболочка для всех различных полей (и у меня есть методы получения и установки для всех полей). Теперь, когда я проверяю исходный код HTML, я вижу это для скрытого поля:

<input type="hidden" name="cpc" value="" id="displayResults_cpc"/>

По какой-то причине не найдено никакого значения ... До того, как я использовал Displaytag, он работал нормально, и у меня в классе Action есть метод получения и установки (сейчас он возвращает пустую строку). *

Редактировать: это код HTML для первых двух строк:

<tr class="odd">
<td>

<form id="displayResults" name="displayResults" onsubmit="return true;" action="/CompanyNameTableManager/displayResults.action;jsessionid=566617D98154AB762002B06D9D1087CD" method="post">
        <input type="hidden" name="cpc" value="" id="displayResults_cpc"/>
        <input type="submit" id="displayResults_remove" name="action:remove" value="Remove" onclick="return confirm('Are you sure you want to delete this item?');"/>

        <input type="submit" id="displayResults_displayEdit" name="action:displayEdit" value="Edit"/>

    </form>  
</td>
<td>10.1.1</td>
<td>Comapny A</td>
<td>abc</td>
<td>123</td>
<td>true</td>
<td>true</td>

<td>true</td></tr>
<tr class="even">
<td>

<form id="displayResults" name="displayResults" onsubmit="return true;" action="/CompanyNameTableManager/displayResults.action;jsessionid=566617D98154AB762002B06D9D1087CD" method="post">
        <input type="hidden" name="cpc" value="" id="displayResults_cpc"/>
        <input type="submit" id="displayResults_remove" name="action:remove" value="Remove" onclick="return confirm('Are you sure you want to delete this item?');"/>

        <input type="submit" id="displayResults_displayEdit" name="action:displayEdit" value="Edit"/>

    </form>
</td>
<td>10.1.2</td>
<td>Comapny B</td>
<td>abc</td>
<td>123</td>
<td>true</td>
<td>false</td>
<td>false</td></tr>

Ответы [ 2 ]

3 голосов
/ 24 августа 2010

Полагаю, я отказался от использования кнопок, но если кому-то интересно, вот что я использовал вместо этого:

<s:form theme="simple" method="post">
<display:table name="table" pagesize="25" requestURI="" uid="row">
<display:column title="Select">
    <s:checkbox name="checked[%{#attr.row_rowNum - 1}]" fieldValue="%{#attr.row.cpc}" theme="simple"/>
</display:column>
<display:column property="cpc" title="CPC" sortable="true" headerClass="sortable"/>
<display:column property="companyName" title="Company Name" sortable="true" headerClass="sortable"/>
<display:column property="eventType" title="Event Type" sortable="true" headerClass="sortable"/>
<display:column property="industryType" title="Industry Type" sortable="true" headerClass="sortable"/>
<display:column property="previousEvents" sortable="true" headerClass="sortable"/>
<display:column property="creditNotifications" sortable="true" headerClass="sortable"/>
<display:column property="interimNotifyEnterprise" sortable="true" headerClass="sortable"/>
</display:table>
    <s:submit action="remove" value="Remove" 
    onclick="return confirm('Are you sure you want to delete this item / these items?');"/>
    <s:submit action="displayEdit" value="Edit"/>
    <s:submit value="Add New Row" action="displayAdd"/>
</s:form>
0 голосов
/ 19 августа 2010

Я думаю, что, вероятно, происходит то, что специфичные для строки требования для Struts 2 и taglib Display плохо взаимодействуют, то есть что другая taglib выполняет свою собственную построчную обработку, и выражение OGNL для 'cpc'не оценивается должным образом, потому что строка неправильно помещается в стек значений (если вы не понимаете, что я имею в виду, это не важно).

Поскольку у вас есть значение цены за клик в другом столбце, можно ли использовать Javascript в onClick (или onLoad) кнопок для получения значения из соседнего поля?

...