質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.93%

JavaEE7 @Nameを使ってBeanのよびだしができない。

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 968

HARU_0124

score 6

 前提・実現したいこと

login.xhtmlからバッキングビーンであるLoginContrlのlogin()メソッドを呼び出したいのですが、エラーとなります。
LoginControlのクラスに@Namedアノテーション使って呼び出し名称を指定しているのですが、うまく動きません。
ただし@Namedから@ManagedBeanに変更するとうまく動きます。
@Namedを使用して、バッキングビーンを呼出したいのですが、どうしたら良いでしょうか?
どうぞよろしくお願い致します。

 発生している問題・エラーメッセージ

action="#{LoginControl.login()}": Target Unreachable, identifier 'LoginControl' resolved to null

 該当のソースコード

login.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:head>
    <title>検証</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

     <style type="text/css">
        .c1 {text-align: right; padding: 5px; width:100px;}
        .c2 {width:170px;}
        .c3 {font-size: 12px; color: #ff0000; width:75px;}
    </style>

</h:head>
<h:body>
    <h2>検証</h2>
    <h3>ログイン</h3>
    <h:form>
        <p:commandButton value="ログイン" action="#{LoginControl.login()}"/>
    </h:form>

</h:body>
</html>


LoginControl.java 

import javax.enterprise.context.RequestScoped;
import javax.inject.Named;

@Named("LoginControl")
@RequestScoped
public class LoginControl {

    public void login() {

        System.out.println("LoginController.login()が呼び出されました。");
    }
}


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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>hmsahozen</display-name>
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
  <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>
  <welcome-file-list>
    <welcome-file>view/login.faces</welcome-file>
  </welcome-file-list>
  <context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>redmond</param-value>
  </context-param>
</web-app>


beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="annotated">
</beans>


build.gradle

apply plugin: 'eclipse'
apply plugin: 'eclipse-wtp'
apply plugin: 'war'
apply plugin: 'findbugs'
apply plugin: 'checkstyle'
apply plugin: 'jacoco'

sourceCompatibility = 1.8

repositories {
    maven {
        url "http://repository.primefaces.org/"
    }
    mavenCentral()
}

dependencies {

    // https://mvnrepository.com/artifact/javax/javaee-web-api
    providedCompile(group:'javax', name:'javaee-web-api', version:'7.0')
    // https://mvnrepository.com/artifact/javax.enterprise/cdi-api
    providedCompile(group: 'javax.enterprise', name: 'cdi-api', version: '2.0')
    // https://mvnrepository.com/artifact/org.apache.commons/commons-collections4
    compile group: 'org.apache.commons', name: 'commons-collections4', version: '4.1'
    // https://mvnrepository.com/artifact/org.slf4j/slf4j-api

    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
    // https://mvnrepository.com/artifact/ch.qos.logback/logback-core
    compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
    // https://mvnrepository.com/artifact/org.primefaces/primefaces
    compile group: 'org.primefaces', name: 'primefaces', version: '6.2'

    compile 'org.primefaces.themes:redmond:1.0.10'

    // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
    testCompile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'

    testCompile 'junit:junit:4.12'
}

 稼働環境

  • JDK8( Update 172)、JavaEE7
  • primefaces6.2
  • Weblogic12.2.1.3.0
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る