См. ?cut
и укажите breaks
(и, возможно, labels
).
x$bins <- cut(x$rank, breaks=c(0,4,10,15), labels=c("1-4","5-10","10-15"))
x
# rank name info bins
# 1 1 steve red 1-4
# 2 3 joe blue 1-4
# 3 6 john green 5-10
# 4 3 liz yellow 1-4
# 5 15 jon pink 10-15
Вам нужно поместить все <h:inputXxx>
/ <h:selectXxx>
компоненты в <h:form>
и привязать их атрибут value
к свойству bean через выражение EL, например #{bean.property}
, поддерживаемое парой getter / setter. При правильной установке JSF автоматически устанавливает значения в компоненте, когда форма отправляется через компонент <h:commandXxx>
в той же форме. Вы можете указать метод действия компонента в атрибуте action
компонента <h:commandXxx>
через выражение EL, подобное #{bean.action}
, которое указывает на голый метод action()
. Все представленные значения доступны прямо там обычным способом Java.
Учитывая этот пример формы JSF с одним полем ввода и одним полем выбора:
<h:form>
<h:inputText value="#{bean.text}" required="true" />
<h:selectOneMenu value="#{bean.choice}" required="true">
<f:selectItem itemValue="#{null}" />
<f:selectItem itemValue="One" />
<f:selectItem itemValue="Two" />
<f:selectItem itemValue="Three" />
</h:selectOneMenu>
<h:commandButton value="submit" action="#{bean.submit}" />
<h:messages />
<h:outputText value="#{bean.result}" />
</h:form>
Следующий компонент распечатывает предоставленные значения в stdout, доказывая, что JSF уже установил значения задолго до момента доступа к нему в методе действий.
package com.example;
import javax.inject.Named;
import javax.enterprice.context.RequestScoped;
@Named // Use @javax.faces.bean.ManagedBean on outdated environments.
@RequestScoped // Use @javax.faces.bean.RequestScoped on outdated environments.
public class Bean {
private String text;
private String choice;
private String result;
public void submit() {
result = "Submitted values: " + text + ", " + choice;
System.out.println(result);
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getChoice() {
return choice;
}
public void setChoice(String choice) {
this.choice = choice;
}
public String getResult() {
return result;
}
}
Вот и все. Поворот регулярной формы в форму ajax - это вопрос о вложении <f:ajax>
в командном компоненте, как показано ниже.
<h:commandButton value="submit" action="#{bean.submit}">
<f:ajax execute="@form" render="@form" />
</h:commandButton>
Вы можете найти другой пример и ценные ссылки внизу нашего JSF wiki page .
Обратите внимание, что все, что вы намерены делать с представленными значениями, несут ответственность JSF. Например, манипулируя им, переходя в другой класс, сохраняя его в базе данных и т. Д. Все это не связано с JSF. Он как платформа, основанная на HTML-формах, уже выполнила свою работу по предоставлению вам представленных значений в удобстве использования переменных Java. Остальное зависит от вас.
Чтобы исследовать следующий шаг, вы должны в этот момент просто делать так, как будто у вас уже есть куча готовых / жестко закодированных переменных, а не весь пользовательский интерфейс на основе JSF. Например, чтобы сохранить значения в базе данных, люди обычно используют инфраструктуру уровня бизнес-сервисов, такую как EJB, которая, в свою очередь, использует инфраструктуру уровня сохранения, такую как JPA. Некоторые люди даже используют JDBC «простой ваниль». Для получения дополнительных ссылок на конкретные примеры, начните здесь: JSF-контроллер, служба и DAO .