2016-05-16 3 views
0

enter image description hereUnfähig "Managed Bean" Problem zu lösen, während sie mit Java arbeiten Bedient Faces 2,2

Vorlage Client.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://xmlns.jcp.org/jsf/facelets" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:h="http://xmlns.jcp.org/jsf/html"> 

    <body> 
     <f:view contracts="#{themeSelector.themeName}">    
      <ui:composition template="/template.xhtml"> 

      <ui:define name="top"> 
       <h:form> 
        <h:outputLabel value="Theme" for="menu"></h:outputLabel> 
        <h:selectOneMenu id="menu" label="ThemeMenu" value="#{themeSelector.themeName}"> 
         <f:selectItem itemLabel="Dark" itemValue="dark"></f:selectItem> 
         <f:selectItem itemLabel="Normal" itemValue="normal"></f:selectItem> 
        </h:selectOneMenu> 
        <h:message for="menu"></h:message> 

       <h:commandButton id="Submit" value="Submit" action="templateClient"></h:commandButton> 
       </h:form> 
      </ui:define> 

     </ui:composition> 
     </f:view> 

    </body> 
</html> 

ThemeSelector.java

package com.rshingha.example; 

import javax.annotation.ManagedBean; 
import javax.faces.bean.RequestScoped; 
import javax.faces.bean.SessionScoped; 


/** 
* 
* @author rshingha 
*/ 
@ManagedBean 
@RequestScoped 
public class ThemeSelector { 
    private String themeName="dark"; 


    public ThemeSelector() 
    { 

    } 
    public String getThemeName() { 

     return themeName; 
    } 

    public void setThemeName(String themeName) { 
     this.themeName = themeName; 
    } 


} 

Ausgabe:

folgende Zeile in TemplateClient.xhtml

<f:view contracts="#{themeSelector.themeName}"> 

Hier Wert von „Verträgen“ -Attribut nicht immer gelöst ist, auch wenn ich „Ctrl + Klick“ auf Eigenschaftsnamen „THEME“ tue, geht es nicht auf diese Eigenschaft in bean-Datei ist

Interessante Sache, wenn ich Wert bin hartzucodieren für „Verträge“ -Attribut dann seine Arbeiten.

Ich habe auch versucht mit @Named Anmerkung, aber gleiche ist in diesem Fall mit einer Ausnahme passiert:

Wenn ich „Ctrl + Klick“ auf Eigenschaftsnamen „THEME“ tue, seine Navigation auf diese Eigenschaft in bean-Datei etwas

Bitte legen nahe, ich bin stecken

Antwort

1

Sie haben falschen Import für @ManagedBean. Verwenden Sie dieses javax.faces.bean.ManagedBean von JSF. Wenn Sie @Named (CDI-Technologie) verwenden möchten, sollten Sie auch die Importe für Bereiche ändern. Der Geltungsbereich der Anforderung wäre javax.enterprise.context.RequestScoped.

+0

Es gibt mehrere Duplikate davon. Bitte suchen Sie danach und markieren Sie die Frage als solche – Kukeltje

Verwandte Themen