2013-05-30 2 views
0

Я работаю над усовершенствованным проектом. Существует родительский элемент <form>. У меня есть файл XHTML, который входит в эту родительскую форму. Вложенный файл XHTML имеет <a4j:commandLink>. Это действие не вызвано. Теперь это сработает, если я оберну его <a4j:commandLink> внутри <h:form>. Таким образом, вызывается действие родительской формы, а также действие <a4j:commandLink>. Но формы гнездования не поощряются. Я не могу использовать действие родительской формы, потому что оно переходит к сервлету, и мое действие находится в объекте с нулевым состоянием . Я не могу получить доступ к bean-компоненту в сервлете. Любая помощь в том, как совершить звонок без <h:form> высоко ценится. Вот как это выглядит:<a4j: commandLink> действие не запускается внутри <form>

<form id="parentFormId" name="parentFormId" action="aservletaction"> 
     <a4j:outputPanel id="includedRegion"> 

     <ui:include src="setupView.xhtml"></ui:include> 
    </a4j:outputPanel> 
    </form> 

Содержание setupView.xhtml:

<ui:composition> 
    <a4j:outputPanel> 
     <h:form> 
     <a4j:commandLink action="#{myBean.actionMethod}" 
      render="adatatableid" limitRender="true"/> 
     </h:form> 
</ui:composition> 

ответ

2

Компоненты RichFaces должны быть внутри формы, иначе они не будут работать (по крайней мере, исполняемые).

Теперь <a4j:commandLink> (и CommandButton) выполняет всю форму поведение по умолчанию, чтобы изменить его использовать executeattribute:

<a4j:commandLink execute="@this" … > 

Это ограничит исполнение только по ссылке.

+0

Спасибо Махиэль. Это сработало. Мне не нужно использовать вокруг commandLink. Таким образом, он вызывает действие bean. Единственным недостатком является то, что он по-прежнему отправляет родительскую форму. –

+0

Не может ли родитель быть '' хотя? Точка командыLink заключается в том, что она берет на себя функциональность формы (т. Е. Вы определяете действие для ссылки, а не для формы). Что обычно для этой родительской формы для отправки? – Makhiel

+0

К сожалению нет, я не могу сохранить родительскую форму как ''. Страница довольно большая, с множеством вызовов сервлетов, и каждый другой подчиненный должен пройти действие формы. Я просто изучил детали вызова POST в firebug. Все содержимое формы входит в состав вызова POST. Но я вижу, что javax.faces.partial.ajax = true. –

1

Это не должно работать. Не встраивайте формы, так как он не является законным в HTML вообще и в HTML-коде , предоставленном JSF в частности. Итак, вы получили следующие конструкции в коде:

<form> 
    ... 
    <h:form> 
     ... 
    </h:form> 
    ... 
</form> 

Избавиться, если и он будет работать, как ожидалось, то есть путем создания простой структуры форм-к-форме.

+0

Я думаю, вы еще не прочитали описание. Я знаю, что он не является законным для гнездования форм, однако таким образом он называет метод действия в компоненте. Если я удалю команду wrapLink для формы, действие никогда не будет вызвано, потому что действие родительской формы вызвано и каким-то образом действие commandLink исчезнет. То, что я ищу, - это способ по-прежнему вызвать действие commandLink без вложенных форм. –

+0

Необходимо правильно скопировать данные. Две стороны друг к другу - это жизнеспособный вариант, как я сказал в своем ответе. Еще одна вещь, которую нужно понять, состоит в том, что ** две формы публикуются по разным адресам **. – skuntsel

+0

Позвольте мне задать свой вопрос по-другому: есть ли способ, которым я могу иметь действие, вызванное из атрибута действия a4j: commandLink, независимо от родительской формы? –

 Смежные вопросы

  • Нет связанных вопросов^_^