Одна из приятных функций JSF 2+, представленных в Java Enterprise Edition JavaEE 6+, заключается в том, что вы можете передавать параметры любому методу действия компонентов действия, например, компонентам commandButton или commandLink .
Исходя из этого, вы можете минимизировать количество методов внутри вашего управляемого компонента.Кроме того, чтобы минимизировать множество параметров, устанавливаемых внутри bean-компонента, который будет использоваться действием для определения логики навигации, что уменьшит потребление памяти, если ваши bean-объекты в областях больше, чем область запроса.
Как это работает:
- Откройте вашу любимую IDE, я собираюсь использовать Netbeans 7.4.1 . (Используйте любую IDE, которая поддерживает JavaEE 6 или 7).
- Создать веб-проект.
Файл -> Новый проект -> Java Web (левая панель) -> Веб-приложение (правая панель) -> Далее. - Назовите его как угодно ( JSFeatures для меня) -> Далее -> Сервер Glassfish4 -> Веб- профиль Java EE 7 -> Контекстный путь «/ JSFeatures» -> Далее.
- В рамках выберите « Java Server Faces » -> « Готово».
- У вас должна быть такая структура проекта:
- Щелкните правой кнопкой мыши по проекту JSFeatures -> новый « JSF Managed Bean ». и его имя и конфиг, как это:
- Открыв компонент на странице редактора, скопируйте и вставьте следующий код после оператора пакета:
01020304050607080910111213141516171819202122232425262728
import
javax.faces.bean.ManagedBean;
import
javax.faces.bean.RequestScoped;
/**
* @author mohamed_taman
*/
@ManagedBean
(name =
"jSFeatBean"
)
@RequestScoped
public
class
JSFeatursBean {
private
String result;
public
String getResult() {
return
result;
}
public
void
setResult(String result) {
this
.result = result;
}
public
JSFeatursBean() {
}
public
Object addNumbers(
int
num1,
int
num2) {
setResult(
"Hi there I am an action method to add numbers."
);
return
null
;
}
}
- Откройте файл index.xhtml, который создается по умолчанию, и скопируйте следующий код и вставьте его в свой файл:
0102030405060708091011121314151617181920
<?
xml
version
=
'1.0'
encoding
=
'UTF-8'
?>
<!
DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<
h:head
>
<
title
>Facelet Title</
title
>
</
h:head
>
<
h:body
>
Hello from Facelets
<
h:form
>
<
p
>
<
h:outputText
value
=
"#{jSFeatBean.result}"
/>
</
p
>
<
h:commandButton
type
=
"submit"
value
=
"Submit"
action
=
"#{jSFeatBean.addNumbers}"
/>
</
h:form
>
</
h:body
>
</
html
>
- Щелкните правой кнопкой мыши на index.xhtml, затем -> Выполнить ; вы должны увидеть что-то вроде этого:
- Нажмите кнопку отправки и просмотрите значение h: outputText , его значение должно быть « Привет, я метод действия. «
- Сейчас все работает нормально. Давайте сделаем ту работу, которую мне нужно продемонстрировать.
- Измените подпись метода addNumbers () на следующую ( без перезапуска сервера приложений ):
- Метод бобов:
01020304050607080910
public
Object addNumbers(
int
num1) {
int
res =
0
;
res = num1;
if
(res ==
0
) {
setResult(
"Hi there I am an action method to add numbers."
);
}
else
{
setResult(
"Final result is: "
+ res);
}
return
null
;
}
- Тогда ваша кнопка звонит:
123
<
h:commandButton
type
=
"submit"
value
=
"Submit"
action
=
"#{jSFeatBean.addNumbers(1)}"
/>
- Нажмите кнопку и выведите текстовое значение должно быть:
1
Final result is:
1
- Метод бобов:
- Сделайте это еще раз:
- Метод бобов:
01020304050607080910
public
Object addNumbers(
int
num1,
int
num2) {
int
res =
0
;
res = num1 + num2;
if
(res ==
0
) {
setResult(
"Hi there I am an action method to add numbers."
);
}
else
{
setResult(
"Final result is: "
+ res);
}
return
null
;
}
- Тогда ваша кнопка звонит:
123
<
h:commandButton
type
=
"submit"
value
=
"Submit"
action
=
"#{jSFeatBean.addNumbers(1,2)}"
/>
- Нажмите кнопку и выведите текстовое значение должно быть:
1
Final result is:
3
- Метод бобов:
Примечание: параметр может быть с другим типом параметров, который, как ожидается, не будет одного типа, также метод может возвращать значение для перехода на другие страницы, в этом примере он возвращает значение null, чтобы быть на той же странице.
Мне очень понравилась эта функция, она мне очень понравилась, очень полезна и удобна, а также приятное кодирование.
Ресурсы: