Buenas!
Há algo errado ? não sei pq ele não aceita…
se eu uso o p:commandButton do primefaces ele funciona, mas nao redireciona a página
se eu uso o converter javax.converter.character ele funciona, mas só pega a primeira letra, claro;
preciso fazer algum custom converter?
:?:
xhtml:
[code]<p:selectOneMenu id=“tipo” value="#{chamadoBean.chamado.tipoChamado}"
effect=“drop” style=“width:180px”>
<f:selectItem itemLabel=“Tipo de Chamado” />
<f:selectItems value="#{chamadoBean.tipoChamado}" var=“tipo”
itemValue="#{tipo}" itemLabel="#{tipo}" />
</p:selectOneMenu>[/code]
bean:
public List<String> getTipoChamado() {
if (this.tipoChamado == null) {
this.tipoChamado = new ArrayList<String>();
this.tipoChamado.add("Reclamação");
this.tipoChamado.add("Sugestão");
}
return tipoChamado;
}
botao:
<h:commandButton action="#{chamadoBean.salvar}" value="Abrir Chamado" />
erro:
chamado:tipo: Erro de validação: o valor não é válido
sim, vc precisa criar um custon converter
eu fiz um mas não rolou:
[code]@FacesConverter (value = “stringer”)
public class StringerConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
if (value == null || value.length() == 0) {
return null;
}
return value;
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
if (value == null) {
return "";
}
return value.toString();
}
}
[/code]
no selectonemenu coloquei converter=“stringer”
já tinha visto esse post
segue sem funfar. não sei qual o problema
não sei nem se tem como fazer isso q eu fiz
um arraylist de string pra um selectonemenu
cara, tente assim
@FacesConverter("stringer")
ao invez
@FacesConverter(value = "stringer")
t+
já fiz isso, dá no mesmo.
Assim não funciona?
public List<SelectItem> getTipoChamado() {
if (this.tipoChamado == null) {
this.tipoChamado = new ArrayList<SelectItem>();
this.tipoChamado.add(new SelectItem("Reclamação", "Reclamação"));
this.tipoChamado.add(new SelectItem("Sugestão", "Sugestão"));
}
return tipoChamado;
}
cara,
tira essa anotação e coloca desse jeito no faces-config.xml
<converter>
<converter-id>clienteConverter</converter-id>
<converter-class>br.com.util.converter.ClienteConverter</converter-class>
</converter>
t+
[quote=nazgulzurak]Assim não funciona?
public List<SelectItem> getTipoChamado() {
if (this.tipoChamado == null) {
this.tipoChamado = new ArrayList<SelectItem>();
this.tipoChamado.add(new SelectItem("Reclamação", "Reclamação"));
this.tipoChamado.add(new SelectItem("Sugestão", "Sugestão"));
}
return tipoChamado;
}
[/quote]
não: javax.faces.model.SelectItem cannot be cast to java.lang.String
alisson: continua sem funcionar tb.
tem algo errado…
cara,
estranho de mais viu, pq tenho um projeto aqui e faço igualzinho eu te passei e funciona perfeito.
posta seu xhtml e converter
xhtml:
[code]
<ui:composition template="/templates/interna.xhtml">
<ui:define name=“titulo”>
Abrir Chamado
</ui:define>
<ui:define name=“corpo”>
<h:form id=“chamado”>
<h:inputHidden value="#{chamadoBean.chamado.codChamado}" />
<h:messages />
<p:selectOneMenu id=“para”
value="#{chamadoBean.chamado.usuarioRecebeuChamado}" effect=“drop”
style=“width:180px”>
<f:selectItem itemLabel=“Usuário Responsável” />
<f:selectItems value="#{usuarioBean.lista}" var=“usuario”
itemValue="#{usuario}" itemLabel="#{usuario.nome}" />
</p:selectOneMenu>
<p:selectOneMenu id=“tipo” value="#{chamadoBean.chamado.tipoChamado}"
effect=“drop” style=“width:180px” >
<f:selectItem itemLabel=“Tipo de Chamado” />
<f:selectItems value="#{chamadoBean.tipoChamado}" var=“tipo”
itemValue="#{tipo}" itemLabel="#{tipo}" />
</p:selectOneMenu>
<h:outputText value=“Descrição”></h:outputText>
<p:editor value="#{chamadoBean.chamado.descricao}"
controls=“bold italic underline strikethrough | font size style | color highlight | bullets numbering | outdent indent | alignleft center alignright justify | rule link unlink | "
width=“500” height=“200” required=“true” />
<p:commandButton action=”#{chamadoBean.salvar}" value=“Abrir Chamado” />
</h:form>
</ui:define>
</ui:composition>
[/code]
converter:
package webchamado.web.converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
public class StringerConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
if (value == null || value.length() == 0) {
return null;
}
return value;
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
if (value == null) {
return "";
}
return value.toString();
}
}
cara,
no seu combobox vc fez o seguinte?
<p:selectOneMenu id="tipo" value="#{chamadoBean.chamado.tipoChamado}"
effect="drop" style="width:180px" converter="StringerConverter">
<f:selectItem itemLabel="Tipo de Chamado" />
<f:selectItems value="#{chamadoBean.tipoChamado}" var="tipo"
itemValue="#{tipo}" itemLabel="#{tipo}" />
</p:selectOneMenu>
package webchamado.web.converter;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
@FacesConverter("StringerConverter")
public class StringerConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
if (value == null || value.length() == 0) {
return null;
}
return value;
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
if (value == null) {
return "";
}
return value.toString();
}
}
t+
[quote=caematos][quote=nazgulzurak]Assim não funciona?
public List<SelectItem> getTipoChamado() {
if (this.tipoChamado == null) {
this.tipoChamado = new ArrayList<SelectItem>();
this.tipoChamado.add(new SelectItem("Reclamação", "Reclamação"));
this.tipoChamado.add(new SelectItem("Sugestão", "Sugestão"));
}
return tipoChamado;
}
[/quote]
não: javax.faces.model.SelectItem cannot be cast to java.lang.String
alisson: continua sem funcionar tb.
tem algo errado…[/quote]
Estranho cara, aqui eu faço assim e funciona na boa, apesar que eu não mencionei, mas no meu xhtml eu faço assim:
<p:selectOneMenu id="tipo" value="#{chamadoBean.chamado.tipoChamado}"
effect="drop" style="width:180px" converter="StringerConverter">
<f:selectItem itemLabel="Tipo de Chamado" />
<f:selectItems value="#{chamadoBean.tipoChamado}"/>
</p:selectOneMenu>
Eu não declaro a var no f:selectItem pra depois chamar no itemLabel e itemValue, deixo isso pro List, e é claro, não uso o converter daí.
vc faz com List ou List como eu ?
agradeço muito por estar me ajudando, apesar de ser um problema bobo e esse forum ter tanta gente, vc é o único que está tentando me ajudar
valeu
cara,
so usar List que vai funcionar, alias teria q funcionar.rs
t+
[quote=caematos]vc faz com List ou List como eu ?
agradeço muito por estar me ajudando, apesar de ser um problema bobo e esse forum ter tanta gente, vc é o único que está tentando me ajudar
valeu[/quote]
Eu uso o List mesmo. Por exemplo:
No bean:
public class Bean {
private String recebeValor;
private List<SelectItem> lista;
//metodos
public List<SelectItem> getLista(){
if(lista.isEmpty){
lista = new ArrayList<SelectItem>();
lista.add(new SelectItem("Sugestao", "Sugestão"); //O primeiro valor do SelectItem é o itemValue e o segundo o itemLabel
}
return lista;
}
}
No xhtml:
<p:selectOneMenu value="#{bean.recebeValor}">
<f:selectItem itemLabel="Selecione..." itemValue=""/>
<f:selectItems value="#{bean.lista}"/>
</p:selectOneMenu>
Com isso, assim que você passa a lista pro f:selectItems, ele já popula com cada valor no seu lugar.
evefuji
Outubro 25, 2011, 4:29pm
#18
com o p:commandButton do primefaces você precisa setar o ajax=“false” para redirecionar a página (pode também update=“id do objeto” para atualizar por ajax)
Com o converter, acho que precisa do javax.faces.converter.String, não o character.
Qual o tipo do value="#{chamadoBean.chamado.tipoChamado}" ? String? não faz nenhuma operação no setTipoChamado?
[quote=evefuji]com o p:commandButton do primefaces você precisa setar o ajax=“false” para redirecionar a página (pode também update=“id do objeto” para atualizar por ajax)
Com o converter, acho que precisa do javax.faces.converter.String, não o character.
Qual o tipo do value="#{chamadoBean.chamado.tipoChamado}" ? String? não faz nenhuma operação no setTipoChamado?[/quote]
setando ajax=“false” dá o erro, como eu falei no 1o post.
não existe esse conversor aqui
bahhhhhhhhhhh não sei mais oq fazer;