Как вызвать метод с параметром из ссылки - PullRequest
1 голос
/ 26 ноября 2011

У меня есть метод в компоненте поддержки, который принимает объект Question в качестве параметра.Я хочу передать вопросную переменную в datatable как аргумент в методе, который вызывается, когда пользователь нажимает кнопку / ссылку.Однако я получаю ошибку в EL только когда пытаюсь #{bean.deleteQuestion(question)} как я могу это сделать?

        <p:dataTable value="#{bean.questions}" var="question"
            id="questionTable" paginator="true" rows="15"
            paginatorTemplate="{CurrentPageReport} {PreviousPageLink} {PageLinks} {NextPageLink} {RowsPerPageDropdown}"
            rowsPerPageTemplate="15,25,50" paginatorPosition="bottom">
            <p:column sortBy="#{question.id}">
                <f:facet name="header">ID</f:facet>
                <h:outputText value="#{question.id}" />
            </p:column>
            <p:column sortBy="#{question.description}">
                <f:facet name="header">Description</f:facet>
                <h:outputText value="#{question.description}" />
            </p:column>
            <p:column>
                <f:facet name="header">Operations</f:facet>
                <h:link value="Show" outcome="pretty:showQuestion">
                    <f:param name="id" value="#{question.id}" />
                </h:link>
                    &nbsp;|&nbsp; 
                    <h:link value="Edit" outcome="pretty:editQuestion">
                    <f:param name="id" value="#{question.id}" />
                </h:link>
                    &nbsp;|&nbsp;
                    // HERE I WANT A DELETE LINK/BUTTON !
                </p:confirmDialog>
            </p:column>
        </p:dataTable>

1 Ответ

0 голосов
/ 27 ноября 2011

Однако я получаю ошибку только в EL, когда пытаюсь #{bean.deleteQuestion(question)}

К сожалению, вы не поделились точными сведениями об «ошибке EL» и кодом вашей попытки (в будущих вопросах вам действительно следует это сделать).

Я предполагаю, что вы пытались

<h:commandLink value="Delete" action="#{bean.deleteQuestion(question)}" />

и что на самом деле ваша IDE, которая неправильно отображает предупреждение / ошибку, и что вы все равно не пытались ее запустить. Основываясь на истории ваших вопросов, вы используете Glassfish 3, для которого передача аргументов метода по EL должна работать идеально. Если это действительно ваша IDE, которая дернулась на этой линии, просто запустите ее в любом случае. Если это действительно работает нормально, перенастройте настройки проверки вашей IDE или установите лучший плагин JSF / EL.

Или, если вы действительно получили ELException во время выполнения, то это может означать только то, что ваш web.xml объявлен в соответствии с Servlet 2.5 вместо Servlet 3.0. Передача аргументов метода в EL поддерживается только начиная с EL 2.2, который является частью JSP 2.2 / Servlet 3.0.

Обратите внимание, что ссылка на команду должна иметь <h:form> родителя. Убедитесь, что вы один; Вы можете поместить это вокруг <h:commandLink> или <p:dataTable>. Также убедитесь, что #{bean} правильно сохраняет questions для запроса отправки формы. Проще всего поместить его в область видимости.

...