Qual è il modo corretto per ottenere il parametro dall'URL in JSF
-
21-12-2019 - |
Domanda
Qui la mia pagina JSF:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<f:metadata>
<f:viewParam name="id" value="#{productDetailBean.id}" />
</f:metadata>
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:outputText value="1=#{productDetailBean.id}" />
<br/>
<h:outputText value="2=#{param['id']}" />
<br/>
<h:outputText value="3=#{productDetailBean.param}" />
</h:body>
</html>
.
e bean
import java.io.Serializable;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
@ManagedBean
@ViewScoped
public class ProductDetailBean implements Serializable{
private String id;
public String getParam(){
FacesContext context = FacesContext.getCurrentInstance();
Map<String, String> paramMap = context.getExternalContext().getRequestParameterMap();
String projectId = paramMap.get("id");
return projectId;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
.
Quando passerò i parametri come questo: /getShment.xhtml?id=123
ottengo l'output
1=
2= 123
3= 123
Secondo e terzo modo funziona bene. Perché prima non funziona?E qual è il modo corretto per ottenere il parametro?
Soluzione
Prova ad andare con almeno 2.2.2 con Glassfish 4. Prima 2.2.x I rilasci di Mojarra hanno problemi di compatibilità ben noti con i nuovi spazi dei nomi http://xmlns.jcp.org/jsf/
JSF.
Vedi anche:
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow