RichFaces4 ShowCaseのPickListでリストにオブジェクトを指定します。
【手順】
1.「RichFaces4プロジェクトの作成方法」の手順で、「RichFaces4Sample047-PickListObject」といプロジェクトを作成。
※プロジェクトの設定は以下の通り。
2.「WebContent/WEB-INF/web.xml」を以下の様に入力。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>RichFaces4Sample047-PickListObject</display-name>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</web-app>
3.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング、「Ctrl+S」でファイルを保存。
4.「Javaパッケージの作成方法」の手順で、「com.example.richfaces4sample047」というパッケージを作成。
5.「Javaクラスファイルの作成方法」の手順で、「PickListBean.java」というクラスファイルを作成。
6.「PickListBean.java」を以下の様に入力。
package com.example.richfaces4sample047;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class PickListBean {
private List<Person> personList;
private List<Person> selectedPersonList;
@PostConstruct
public void init() {
this.personList = new ArrayList<Person>();
Person person = new Person();
person.setId("1");
person.setName("あいうえお");
person.setAge(20);
personList.add(person);
person = new Person();
person.setId("2");
person.setName("かきくけこ");
person.setAge(30);
personList.add(person);
person = new Person();
person.setId("3");
person.setName("さしすせそ");
person.setAge(40);
personList.add(person);
person = new Person();
person.setId("4");
person.setName("たちつてと");
person.setAge(50);
personList.add(person);
person = new Person();
person.setId("5");
person.setName("なにぬねの");
person.setAge(60);
personList.add(person);
person = new Person();
}
public List<Person> getPersonList() {
return personList;
}
public void setPersonList(List<Person> personList) {
this.personList = personList;
}
public List<Person> getSelectedPersonList() {
return selectedPersonList;
}
public void setSelectedPersonList(List<Person> selectedPersonList) {
this.selectedPersonList = selectedPersonList;
}
}
7.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング、「Ctrl+S」でファイルを保存。
8.「Javaクラスファイルの作成方法」の手順で、「Person.java」というクラスファイルを作成。
9.「Person.java」を以下の様に入力。
package com.example.richfaces4sample047;
public class Person {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
10.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング、「Ctrl+S」でファイルを保存。
11.「Javaクラスファイルの作成方法」の手順で、「PersonConverter.java」というクラスファイルを作成。
12.「PersonConverter.java」を以下の様に入力。
package com.example.richfaces4sample047;
import javax.el.ELContext;
import javax.el.ExpressionFactory;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter("PersonConverter")
public class PersonConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String s) {
ELContext elContext = facesContext.getELContext();
ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
ValueExpression valueExpression = expressionFactory.createValueExpression(elContext, "#{pickListBean}", PickListBean.class);
PickListBean pickListBean = (PickListBean) valueExpression.getValue(elContext);
for (int i = 0; i < pickListBean.getPersonList().size(); i++) {
if (pickListBean.getPersonList().get(i).getName().equals(s)) {
return pickListBean.getPersonList().get(i);
}
}
return null;
}
@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object o) {
if (o == null) return null;
return ((Person) o).getName();
}
}
13.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング、「Ctrl+S」でファイルを保存。
14.「任意のファイルの作成方法」の手順で、「WebContent/」ディレクトリに「index.xhtml」というファイルを作成。
15.「index.xhtml」を以下の様に入力。
<html xmlns="http://www.w3c.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<h:head>
</h:head>
<h:body>
<h:form>
<rich:pickList value="#{pickListBean.selectedPersonList}"
listWidth="100px"
listHeight="100px"
orderable="true" >
<f:selectItems value="#{pickListBean.personList}"
var="person"
itemValue="#{person}"
itemLabel="#{person.name}" />
<f:converter converterId="PersonConverter" />
</rich:pickList>
<br /><br />
<a4j:commandButton value="送信" render="out" execute="@form" />
<rich:list id="out" var="person" value="#{pickListBean.selectedPersonList}" >
ID:#{person.id} 名前:#{person.name} 年齢:#{person.age}<br />
</rich:list>
</h:form>
</h:body>
</html>
16.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング、「Ctrl+S」でファイルを保存。
17.「動的Webアプリケーションをサーバーに配置する方法」の手順で、作成したプロジェクトをサーバーに配置します。
18.「サーバーをデバッグモードで起動する方法」の手順で、サーバーを起動します。
19.ブラウザで以下のURLにアクセスします。
http://localhost:8080/RichFaces4Sample047-PickListObject/faces/index.xhtml
20.以下の様に表示されれば成功です。
以上です。
PickListObject-01.png)
PickListObject-02.png)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。