2017-03-21 1 views
0

je suis dans mon code suivant xhtml:Prettyfaces lien avec l'entrée d'utilisateur en tant que paramètre

<h:inputText binding="#{year}" /> 
<h:inputText binding="#{month}" /> 

<pretty:link value="Create" mappingId="pretty:addEntity"> 
    <f:param name="year" value="#{year.value}" /> 
    <f:param name="month" value="#{month.value}" /> 
    Create Entity 
</pretty:link> 

J'ai aussi eu un haricot avec une méthode init avec @URLAction(onPostback = false) annotée.

Je souhaite lire le paramètre transmis dans cette méthode. Les paramètres ne sont pas dans la carte de paramètres de demande de JSF ni dans la chaîne de requête (com.ocpsoft.pretty.PrettyContext.getCurrentInstance().getRequestQueryString())

Comment puis-je transmettre ces paramètres à la méthode init sans les lier à un bean backing?

import com.ocpsoft.pretty.faces.annotation.URLAction; 
import com.ocpsoft.pretty.faces.annotation.URLMapping; 

import de.financeme.view.menu.NaviCase; 

import javax.annotation.ManagedBean; 
import javax.faces.bean.ViewScoped; 

import lombok.Getter; 
import lombok.Setter; 

@ManagedBean 
@ViewScoped 
@URLMapping(id = "addEntity", pattern = "/entity/add", viewId = "/entity/add.xhtml") 
public class Bean { 

    @Getter 
    @Setter 
    private String month; 

    @Getter 
    @Setter 
    private int year; 

    @URLAction(onPostback = false) 
    public void init() { 
    // month = null 
    // year = 0 
    } 
} 

Même en les attachant au support. Je n'appelle aucune fonction de soumission. Donc, ils ne seront pas stockés dans leurs champs respectifs.

Qu'est-ce qui ne va pas? Qu'est-ce que j'oublie ici?

+0

S'il vous plaît inclure le code de votre haricot et les correspondances. – chkal

+0

Merci pour l'indice! Est-ce que c'est assez d'informations? – alexander

Répondre

0

Vous devez lier les paramètres à votre grain dans votre motif. Quelque chose comme ceci:

<pretty:link value="Create" mappingId="pretty:addEntity"> 
    <f:param name="year" value="2017" /> 
    <f:param name="month" value="12" /> 
    Create Entity 
</pretty:link> 

et le haricot:

@ManagedBean 
@ViewScoped 
@URLMapping(id = "addEntity", 
    pattern = "/entity/#{bean.year}/#{bean.month}/add", 
    viewId = "/entity/add.xhtml") 
public class Bean { 

    // ... 

} 

Maintenant, vous obtiendrez des liens comme celui-ci:

/entity/2017/12/add

+0

Comment géreriez-vous l'entrée de l'utilisateur? Fondamentalement, je veux que l'utilisateur remplisse le mois et l'année et que l'utilisateur soit redirigé vers la page 'addEntity' en cliquant sur le lien' pretty: '. – alexander