Как мне вызвать метод с переменными параметрами в JSF?Метод действия JSF с переменным параметром
Я пытался что-то вроде этого:
<h:commandButton value="Send" action="#{myBean.checkPIN(someOtherBean.PIN)}" />
Однако, это не работает.
Как мне вызвать метод с переменными параметрами в JSF?Метод действия JSF с переменным параметром
Я пытался что-то вроде этого:
<h:commandButton value="Send" action="#{myBean.checkPIN(someOtherBean.PIN)}" />
Однако, это не работает.
Если вы используете EL 2.2 +, это возможно.
Если вы используете старую версию OT EL, вы можете использовать сделать следующее:
<h:commandButton value="Send" action="#{myBean.checkPIN}" />
<f:param name="parameter" value="123" />
</h:commandButton>
В управляемом компоненте вы можете получить это нравится:
public void checkPIN() {
...
Map<String, String> parameterMap = (Map<String, String>) externalContext.getRequestParameterMap();
String param = parameterMap.get("parameter");
...
}
это сработало. Это должно быть что-то не так с версией. 2.2+ намного понятнее. Спасибо –
@ MateuszGaweł выглядит как проблема на вашем сервере веб-приложений. Какой из них вы используете? –
Да, это возможно, если вы используете>EL 2.2 which is part of Servlet 3.0.
suggetions Знакомства @ BalusC здесь Invoke direct methods or methods with arguments/variables/parameters in EL
Вы правы. Спасибо –
@ MateuszGaweł Рад помочь вам. Представьте это как ответ, если он полезен (отметьте левую сторону). –
Это делает работу с EL 2.2
. Скорее всего, это версия, которую вы используете, поскольку вы используете JSF 2
(даже если это может быть не так).
Вы можете сделать очень простой тест. Вы можете иметь OtherMB
, такие как это:
@ManagedBean(name = "otherMB")
public class OtherMB{
public String getValue(){
return "Other Managed Bean Value";
}
}
и способ, в вашем MainMB
, как это:
@ManagedBean(name = "mainMB")
public class MainMB{
public void method(String str){
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(str));
}
}
И в вашем xhtml
вы можете просто вызвать функцию с помощью кнопки:
<h:commandButton action="#{mainMB.method(otherMB.value)}" value="Click Me!" />
Просто помните, что h:commandButton
должен находиться внутри h:form
и что вам нужен компонент nt, чтобы показать сообщение. Или вы можете просто изменить реализацию, чтобы распечатать сообщение в консоли
Эта функция не относится к JSF 2.x. Это характерно для EL 2.2. Поэтому использование JSF 2.x никоим образом не означает, что EL 2.2 также используется. Внимательно прочитайте последний абзац http://stackoverflow.com/a/3284328/ – BalusC
Я знаю @BalusC. Я внимательно прочитал ваш ответ (который был очень поучительным), и именно поэтому я сказал в ответ такие вещи, как «вероятно» и «хотя это может и не быть» –
Какую версию JSF вы используете? –
Я использую версию 2.0 –
возможного дубликата [JSF 2.0 invocation] (http://stackoverflow.com/questions/3284236/jsf-2-0-method-invocation) – BalusC