JSF2.1+RichFaces4.2.2による実践的なWebアプリケーションを開発する。
※010では、他のManagedBeanを参照する処理を共通化・簡易化します。
【手順1】
1.「LoginActionBean.java」を以下の様に修正。
package kakitori.login.managedbean; import java.io.Serializable; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import kakitori.common.ManagedBeanUtil; @ManagedBean @RequestScoped public class LoginActionBean implements Serializable { private static final long serialVersionUID = -7982056395519095894L; public void login() { LoginFormBean loginFormBean = (LoginFormBean) ManagedBeanUtil .getManagedBean(LoginFormBean.class); System.out.println("loginId=" + loginFormBean.getLoginId()); System.out.println("password=" + loginFormBean.getPassword()); } }
2.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング、「Ctrl+S」でファイルを保存。
3.「Javaパッケージの作成方法」の手順で、「kakitori.common」というパッケージを作成。
4.「Javaクラスファイルの作成方法」の手順で、「ManagedBeanUtil.java」というクラスファイルを作成。
5.「ManagedBeanUtil.java」を以下の様に入力。
package kakitori.common; import javax.el.ELContext; import javax.el.ExpressionFactory; import javax.el.ValueExpression; import javax.faces.context.FacesContext; public class ManagedBeanUtil { public static Object getManagedBean(Class<?> targetClass) { String targetClassName = createManagedBeanName(targetClass); FacesContext facesContext = FacesContext.getCurrentInstance(); ELContext elContext = facesContext.getELContext(); ExpressionFactory expressionFactory = facesContext.getApplication() .getExpressionFactory(); ValueExpression valueExpression = expressionFactory .createValueExpression(elContext, targetClassName, targetClass); return valueExpression.getValue(elContext); } private static String createManagedBeanName(Class<?> targetClass) { StringBuilder className = new StringBuilder(); className.append("#{"); className.append(targetClass.getSimpleName().substring(0, 1) .toLowerCase()); className.append(targetClass.getSimpleName().substring(1)); className.append("}"); return className.toString(); } }
6.「Ctrl+Shift+F」を押し、ソースコードをフォーマッティング、「Ctrl+S」でファイルを保存。
7.「サーバーをデバッグモードで起動する方法」の手順で、サーバーを再起動します。
8.ブラウザで以下のURLにアクセスします。
http://localhost:8080/kakitori/faces/index.xhtml
9.以下の様に表示されれば成功です。
※ログインID、パスワードを入力後、ログインボタンを押すと、Eclipseのコンソールに入力した値が出力されます。
【課題】
001.ログインIDのテキストフィールドにフォーカスが入ったときにIMEの入力がなぜか「かなモード」になるのでIMEの制御が必要。⇒OK
002.画面表示時にログインIDのテキストフィールドにフォーカスの移動が必要。⇒OK
003.「Tab」キーを押下時に「ログインID」⇒「パスワード」⇒「ログインボタン」⇒最初に戻るの制御が必要。⇒OK
004.h:panelGridでのカラムの連結方法が不明なので、facetのfooterでカラムを連結させたが、正式なカラムの連結方法があれば変更する。
005.ログインボタンの横位置を制御し、セル中央に移動させる。⇒OK
006.ログイン情報のh:panelGrid自体を、画面中央に移動させる。⇒OK
007.IDの命名方法の検討が必要。
008.「Tab」キーの押下時にTabIndexが最後の場合、最初のTabIndexに移動する制御が必要。
009.ManagedBeanに画面の項目値と処理の両方が記述されるので、クラスの見通しが悪くなりそうなので分離が必要。⇒OK
010.XHTML名、XHTMLの配置ディレクトリ名、Javaのパッケージ名の対応付け規則が必要。
011.他のManagedBeanを参照する記述は、今後多数現われそうなので、共通化・簡易化が必要。⇒OK
012.ログインID、パスワードの入力必須チェックが必要。
013.Java関数の単体テストの作成が必要。
以上です。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。