Если вы используете maven для создания своего приложения, это не правильный способ добавить внешнюю библиотеку. Вы должны либо
mvn install:install-file -Dfile=myJar.jar -DgroupId=com.yourproject -DartifactId=yourproject -Dversion={version} -Dpackaging=jar
. Вариант 1 предпочтительнее, так как вам не нужно держать банку в своем проекте.
Несколько способов.
<h:form id="form" style="display:none;">
<h:commandButton id="button" action="#{bean.action}">
<f:ajax render=":results" />
</h:commandButton>
</h:form>
<h:panelGroup id="results">
...
</h:panelGroup>
Вы можете вызвать его в JS, как показано ниже: document.getElementById("form:button").onclick();
Обратите внимание на важность запуска onclick()
вместо click()
в случае <h:commandButton>
. onclick()
немедленно вызывает функцию onclick
, в то время как click()
запускает событие «щелчок» на элементе, которое не поддерживается в IE. Если вы использовали <h:commandLink>
, вы можете безопасно использовать click()
. Чтобы вызвать его во время события load
, рассмотрите вопрос о его включении в <h:outputScript target="body">
. target="body"
автоматически помещает <script>
в конец <body>
, поэтому обертка $(document).ready()
не нужна. <h:outputScript target="body">
document.getElementById("form:button").onclick();
</h:outputScript>
<p:remoteCommand>
. <h:form>
<p:remoteCommand name="commandName" action="#{bean.action}" update=":results" />
</h:form>
<h:panelGroup id="results">
...
</h:panelGroup>
Вы можете вызвать его в JS, как показано ниже: commandName();
Это, однако, не использует JSF native jsf.ajax.request()
, вместо этого использует собственный jQuery из PrimeFaces (вы знаете, PrimeFaces является библиотекой компонентов JSF поверх jQuery / UI). Чтобы вызвать его во время события load
, установите autoRun="true"
. <p:remoteCommand ... autoRun="true" />
UIComponent
, который расширяет UICommand
и генерирует необходимый JSF-вызов jsf.ajax.request()
. Вы тогда по сути изобретаете <p:remoteCommand>
, чтобы использовать собственный JSF ajax вместо jQuery. Библиотека утилиты JSF OmniFaces имеет компонент <o:commandScript>
, который выполняет именно это. См. Также демонстрацию и исходный код . <h:form>
<o:commandScript name="commandName" action="#{bean.action}" render=":results" />
</h:form>
<h:panelGroup id="results">
...
</h:panelGroup>
Вы можете вызвать его в JS, как показано ниже: commandName();
Чтобы вызвать его во время события load
, установите autorun="true"
. <o:commandScript ... autorun="true" />
<h:commandScript>
. Он доступен с 2.3.0-m06 . Синтаксис точно такой же, как и выше <o:commandScript>
. Просто замените o:
на h:
.