Метод, вызываемый для действия commandButton, не вызывается

Я не знаю, почему метод вызвал

action="#{template.questionMB.navigateToQuestionPage()} 

не называется.

Я использую JSF 2.2, у меня нет ошибок в выводе и в сообщениях h:. Журналы, которые я помещаю в метод, не печатаются на выходе, потому что метод не вызывается.

Я попытался выяснить проблему, прочитав эти сообщения, post1 и post2 и несколько других, я не нашел из проблемы. Я использовал type=submit, я использовал commandLink вместо commandButton, но ничего.

Я указал commandButton с ->>>> <<<<- в коде ниже.

 <ui:define name="content">
       <ul class="breadcrumb">
          <li><a href="#"><h:outputText value="#{labels['breadcrumb.home']}"/></a></li>
          <li><a href="listTemplates.xhtml"> <h:outputText value="#{labels['breadcrumb.listTemplates']}"/></a></li>
          <li><a href="displayTemplate.xhtml"><h:outputText value="#{labels['breadcrumb.displayTemplates']} #{template.templateDt.mnemonic}"/></a></li>
          <li><a href="displayQuestionnaire.xhtml"><h:outputText value="#{labels['breadcrumb.viewQuestionnaire']} #{template.questionnaireMB.currentQuestionnaire.mnemonic}"/></a></li>
          <li><a href="displayChapter.xhtml"><h:outputText value="#{labels['breadcrumb.viewChapter']} #{template.chapterMB.currentChapter.mnemonic}"/></a></li>
          <li><a href="displayQuestion.xhtml"><h:outputText value="#{labels['breadcrumb.viewQuestion']} #{template.questionMB.currentQuestion.mnemonic}"/></a></li>
          <c:choose>
            <c:when test="${param['type'] eq 'instructions'}">
              <li><h:outputText value="#{labels['editQuestionDetails.QuestionInstructions']} #{template.questionMB.currentQuestion.mnemonic}"/></li>
            </c:when>
            ...
            </c:choose>
       </ul>
       <h:form id="form" class="form-horizontal">

             <c:choose>
                <c:when test="${param['type'] eq 'instructions'}">

                          <h2 class="ico_general_settings">Question instructions</h2>

                  ->>>>>    <h:messages errorClass="ico_cancel" infoClass="ico_success" fatalClass="ico_cancel" warnClass="ico_warning"/>
                       <h:message for="returnBtn"/>   <<<<<-

                          <label id="lblInstructions" for="instructions" class="top">Instrucţiuni </label>
                          <h:inputTextarea id="instructions" rows="3" value="#{template.questionMB.currentQuestion.instructions}" styleClass="input-sm form-control"/>
                          <h:commandButton value="Save" styleClass="btn btn-sm btn-primary" action="#{template.questionMB.saveQuestion}" onclick="return !checkTemplateTasksInProgress();"/>&nbsp;
                ->>>>>    <h:commandButton id="returnBtn" value="Return" styleClass="btn btn-sm btn-default" action="#{template.questionMB.navigateToQuestionPage()}" immediate="true" />   <<<<<-

И метод в bean:

public String navigateToQuestionPage() {
        logger.debug("+++ navigateToQuestionPage() called");
    if (currentQuestion.getAnswer() != null && currentQuestion.getAnswer().getClass() == AnswerMatrix.class) {
        return ACTION_DISPLAY_QUESTION_MATRIX;
    } else {
        navigationRuleType = NavigationRuleEditType.QUESTION;
        return ACTION_DISPLAY_QUESTION;
    }
    }

person Nelly Junior    schedule 14.06.2016    source источник
comment
Ваша проблема соответствует № 5 дубликата. В будущем, пожалуйста, просматривайте весь список, а не останавливайтесь на 1-м пункте. Кроме того, создание MCVE на основе инструкций на stackoverflow.com/tags/jsf/info должно было решить эту проблему гораздо раньше. . Ваш вопрос в его текущей форме подразумевает, что ваша проблема исчезает, когда вы удаляете, например. <div class="col-sm-4">. Но это неверно, и поэтому этот фрагмент (и многие другие фрагменты) являются лишь шумом, который отвлекает потенциального отвечающего от прочтения вопроса.   -  person BalusC    schedule 14.06.2016
comment
Какая дублированная страница? Я просто разместил источники, которые мне не помогли.   -  person Nelly Junior    schedule 14.06.2016
comment
Просто посмотрите в верхней части вопроса? Это первый источник, который вы сами связали.   -  person BalusC    schedule 14.06.2016
comment
Именно из-за этого. Код ясно говорит об этом. Я не случайно угадываю. Или вы подразумеваете, что ваша проблема все еще сохраняется, когда вы жестко кодируете test="#{true}" или полностью удаляете <c:choose>/<c:when>?   -  person BalusC    schedule 14.06.2016
comment
@BalusC: я прочитал полностью в первый раз. Как вы думаете, почему моя проблема соответствует № 5 в сообщении 1, потому что у меня есть ‹c:when test=${param['type'] eq 'instructions'}› внутри ‹h:form›? Параметр send действительно является инструкциями. В ‹c:when test=${param['type'] eq 'instructions'}› из ‹ul class=breadcrumb›...‹/ul› отображается соответствующий outputText.   -  person Nelly Junior    schedule 14.06.2016
comment
Ваша проблема не в отображении формы, а в отправке формы и вызове метода, верно? Просто щелкните ссылку См. также этого элемента. Случайно описывает именно ваш случай.   -  person BalusC    schedule 14.06.2016
comment
Я использую jsf 2.2. отправка параметров в commandButton - еще одна проблема, с которой я столкнулся, но, надеюсь, я заставлю ее работать. Однако я видел, как вы сказали этому парню использовать f:param внутри commandButton, и, похоже, это не работает. Я тоже пробовал.   -  person Nelly Junior    schedule 14.06.2016
comment
Если вы отредактируете вопрос, чтобы включить настоящий MCVE в соответствии с инструкциями по ссылке в 1-м комментарии, чтобы он воспроизводился для всех остальных в мире без шума и дополнительных инструкций, тогда я снова открою вопрос.   -  person BalusC    schedule 14.06.2016
comment
Давайте продолжим обсуждение в чате.   -  person Nelly Junior    schedule 14.06.2016
comment
Что ж, проблема сохраняется. Если у кого-то есть ответ, это приветствуется.   -  person Nelly Junior    schedule 15.06.2016
comment
Когда вы удаляете этот <c:choose>, он работает нормально? Если да, то когда вы сохраняете #{param.type} через <f:param>, как объяснено в дубликате, проблема все еще сохраняется?   -  person BalusC    schedule 15.06.2016
comment
Вместо ‹c:when test=${param['type'] eq 'instructions'}› я использовал rendered, но проблема осталась. ‹ui:fragment rendered=#{param['type'] eq 'instructions'}›   -  person Nelly Junior    schedule 21.06.2016
comment
Я предлагал не заменить, а удалить. Просто одноразовый тест, чтобы выявить или исключить его причину. Оба подхода будут иметь одинаковый эффект при неправильном использовании, как объяснено в дубликате. Если вы понятия не имеете, о чем я говорю, внимательно прочитайте минимально воспроизводимый пример и ссылку в моем первом комментарии. что такое MCVE.   -  person BalusC    schedule 21.06.2016
comment
Если я удаляю c:when и c:choose, вызывается метод. Но что мне теперь делать, чтобы визуализировать только те компоненты, которые мне нужны?   -  person Nelly Junior    schedule 21.06.2016
comment
Очевидно, решение <f:param> было сделано плохо.   -  person BalusC    schedule 21.06.2016
comment
Мое решение состояло в том, чтобы создать 2 разные страницы.   -  person Nelly Junior    schedule 22.06.2016