2015-05-07 2 views
1

У меня есть форма JSF с одним входом и без кнопки отправки. Форма отправляется, когда пользователь нажимает . Введите. Я хотел бы вызвать метод поддержки bean bean для отправки этой формы. Как я могу это достичь?Как вызвать метод бэк-компонента без использования h: commandButton или h: commandLink

<h:form> 
    <h:inputText value="#{searchBean.propertyName}" /> 
</h:form> 
+1

Ваш вопрос неоднозначен. Вы хотите вызвать «метод Java» или «функцию JavaScript»? Вы продолжаете говорить «функция», и у вас есть «[javascript]» с тегами, но ваш заголовок содержит «бэк-компонент». – BalusC

+0

@BalusC, функция бэк-функции/java-метод, и пометка javascript для возможности использования mojarra.jsfcljs –

+1

«Функция» имеет другое значение в Java. Никогда не смешивайте их с методами. Вы действительно хотите сказать «метод бэк-бобов». – BalusC

ответ

1

Я не думаю, что то, что вы пытаетесь для достижения можно было бы сделать без входного компонента типа отправки в форме. Если вам просто не нравится отображаемая кнопка, вы можете скрыть ее на полученной странице xhtml с помощью style="display: none". Форма по-прежнему будет отправляться, когда Ввести нажата, и вы получите желаемое поведение.

<h:form> 
    <h:inputText value="#{searchBean.propertyName}"/> 
    <h:commandButton actionListener="#{searchBean.method()}" style="display: none"/> 
</h:form> 
+0

спасибо alex, я на самом деле не нашел прямого решения, поэтому решил его, как вы предлагали –

0

Вы можете прикрепить обработчик к submit события формы. Если вы даете вашей форме идентификатор (например: "Myform"):

document.getElementById('myForm').addEventListener('submit', function() { 
    // do stuff 
}); 
+0

Это плохие практики. События должны быть абстрагированы от формы, а не внутри. Это способствует удобочитаемости и более приятному кодированию –

+0

@SterlingArcher, конечно, я просто иллюстрировал размещение обработчика 'submit' на самой' форме', в отличие от обработчика 'click' на' button'. Без сомнения, OP будет делать это правильно –

0

Вы пришли Подавать с AJAX по призванию

<h:form> 
<div class="search"> 

    <span class="searchIcon icon-magnifier"></span> 
    <h:inputText value="#{searchBean.propertyName}" id="propertyName" 
     a:placeholder="" readonly="false"></h:inputText> 
    <f:ajax event="change" listener="{searchBean.beanMethod}"/> 
</div>