Nino1
Agosto 23, 2006, 3:36pm
#1
Estou com algum problema no meu select do struts, esta dando o seguinte erro…
Cannot find bean under name org.apache.struts.taglib.html.BEAN
Minha JSP ta ssim com o select
[code] [NEW
<%@ taglib uri="/tags/struts-html" prefix=“html”%>
<%@ taglib uri="/tags/struts-logic" prefix=“logic”%>
<%@ taglib uri="/tags/struts-bean" prefix=“bean”%>
html:html
Continuação do Cadastro
<%= request.getAttribute(“combo”) %>
<html:select property=“comboBox” >
<html:option value="">Selecione</html:option>
<html:options collection=“comboBox” property=“codigo” labelProperty=“nome” />
</html:select>
</html:html>
[/code]
minha action
package projeto.estudo.struts.study;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class UploadComboAction extends Action{
@Override
public ActionForward execute(ActionMapping map, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
BeanCombo beanCombo = new BeanCombo();
BeanCombo beanCombo1 = new BeanCombo();
beanCombo.setNome("01");
beanCombo.setCodigo(1);
beanCombo1.setNome("02");
beanCombo1.setCodigo(2);
ArrayList<BeanCombo> arrayCombo = new ArrayList<BeanCombo>();
arrayCombo.add(beanCombo);
arrayCombo.add(beanCombo1);
request.setAttribute("combo", arrayCombo);
System.out.println(arrayCombo);
return map.findForward("tela");
}
}
Fico no aguardo de uma ajuda…
Nino1
Agosto 23, 2006, 3:54pm
#2
Ta td OK… com relação a isso… veja q onde eu coloco um System.out.println(arrayCombo);
Ele esta dando o endereço do objeto…
Nino1
Agosto 23, 2006, 4:06pm
#3
Não é não já tentei isso já… e q no lugar do propertys vai o nome do bean ao qual eu relacionei o combobox…
assim…
public class UploadForm extends ActionForm{
private String comboBox;
public String getCombo() {
return comboBox;
}
public void setCombo(String combo) {
this.comboBox = combo;
}
}
entendeu
Nino1
Agosto 23, 2006, 4:14pm
#4
Não deu certo aki não…
<html:options collection=“combo” property=“codigo” labelProperty=“nome” />
mas não deveria ser o nome do abjeto q criei da array… assim::
<html:options collection=“arrayCombo” property=“codigo” labelProperty=“nome” />
da uma olhada no meu struts-config.xml… pra vê se tem algo errado…
<action
path="/Upload"
type="projeto.estudo.struts.study.UploadComboAction"
name="UploadForm"
input="/tela.jsp">
<forward name="tela" path="/tela.jsp"/>
</action>
<form-bean
name="UploadForm"
type="projeto.estudo.struts.study.UploadForm"/>
Nino1
Agosto 23, 2006, 4:33pm
#5
É não deu certo continua no mesmo… olha esqueci de mandar minha classe BeanCombo tai agora… mudei oq vc pediu e ainda ta na mesma
import org.apache.struts.action.ActionForm;
public class BeanCombo {
private String nome;
private int codigo;
public void setNome(String nome) {
this.nome = nome;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public int getCodigo() {
return codigo;
}
}
Nino1
Agosto 23, 2006, 4:40pm
#6
O mesmo…
Cannot find bean under name org.apache.struts.taglib.html.BEAN
Nao falta um html:form ai?
Tenta assim:
[code]
<%@ taglib uri="/tags/struts-html" prefix=“html”%>
<%@ taglib uri="/tags/struts-logic" prefix=“logic”%>
<%@ taglib uri="/tags/struts-bean" prefix=“bean”%>
html:html
<html:form action="/Upload">
Continuação do Cadastro
<html:select property=“comboBox” >
<html:option value="">Selecione</html:option>
<html:options collection=“comboBox” property=“codigo” labelProperty=“nome” />
</html:select>
</html:form>
</html:html>[/code]
Nino1
Agosto 23, 2006, 4:49pm
#8
Eu sempre atualizo os jsp’s… esse ear não… como vejo isso…
Nesse tópico esta todas minhas classes e jsp’s caso vc montou td ai e deu certo… me da um toque…
Nino1
Agosto 23, 2006, 4:51pm
#9
A tá agora deu certo… tava faltando o form mesmo…
Brigadasso galera valeu pelo apoio…
Nino1
Agosto 23, 2006, 4:52pm
#10
Obs:
Sempre quando usar esses for’s eles devem ser colocados dentro dos form’s???
Abs
Sempre que vc utilizar uma tag Struts com property=“alguma_coisa” (html:select, html:text, html:hidden…) vc vai precisar do form, e nesse form vc precisa de um atributo “alguma_coisa” senao ele levanta esse erro.
Nino1
Agosto 24, 2006, 11:15am
#12
Cara pegando mais uma carona… como faço pra criar os checkbox… com o mesmo esquema de criar objetos setar eles e mandar pra uma Array… pq do não da pra fazer do mesmo jeito q povoa o combobox ou dá sem problemas tentei e não deu certo…
Aguardo ajuda cara…
Primeiro vc precisa criar uma variavel no seu form para armazenar o valor do checkbox. Essa variavel pode ser Boolean. Depois vc inclui o checkbox no JSP (<html:checkbox property=“nomeDaVariavelDoSeuForm” value=“true” /> ). Depois eh soh tratar na sua action o valor passado em nomeDaVariavelDoSeuForm, se for true eh porque foi marcado e se for null eh porque nao foi marcado.
Nino1
Agosto 24, 2006, 2:35pm
#14
Usando o logic iterate tem fazer akilo q fizemos com o combobox… povoar com os valores da coleção… como ficaria… eu fiz assim e não deu certo…
<html:form action="/check">
<logic:iterate id="check" name = "checkBoxCombo" type= "projeto.estudo.struts.study.UploadCheckBoxAction" >
<bean:write name ="check" property = "cor"/>
</logic:iterate>
</html:form>
mas não vai…
No primeiro exemplo nao foi utilizado iterate. Na verdade nao entendi muito bem a sua necessidade para o iterate no caso deste checkbox.
Sugiro que vc tente primeiro utilizar o checkbox e o iterate separadamente, para entender bem cada um deles.
Nste ultimo exemplo que vc postou o type nao esta correto. O iterate percorre todos os elementos da colecao referenciada pelo atributo name. O atributo type especifica qual eh o tipo dos elementos da colecao especificada.
Tente criar um arraylist na sua action e guardar o mesmo no request:
ArrayList al = new ArrayList();
al.add("1");
al.add("2");
al.add("3");
request.setAttribute("lista",al);
Depois no seu jsp inclua o seguinte iterate:
<logic:iterate name="lista" id="elemento" type="java.lang.String">
<bean:write name="elemento" />
</logic:iterate>
No caso do checkbox tente apenas com:
<html:checkbox property="nomeDoSeuForm" property="nomeDoSeuAtributo"/> Um checkbox
Para usar o iterate com checkbox tente usar isto:
<logic:iterate id=“combos” name=“combo”>
<html:multibox property=“comboBox”>
<bean:write name=“combos” property=“codigo”/>
</html:multibox>
<bean:write name=“combos” property=“nome”/>
</logic:iterate>
Nino1
Agosto 25, 2006, 8:15am
#17
A minha ideia de usar o Iterate… é a mesma quando uso o select para adicionar os valores pela coleção, ao invés de ficar colocando um por vez…
Marcel Horner:
Não entendi pq meu type está errado… não deveria ser a minha classe Action nelo… não entendi pq vc colocou o “java.lang.String”…
Brigadão pela ajuda de vcs galera…
jormiz
Agosto 23, 2006, 3:48pm
#18
Veja se o caminho (uri) declarado na sua jsp:
<%@ taglib uri="/tags/struts-bean" prefix=“bean”%>
esta igual ao do web.xml
/tags/struts-bean
/WEB-INF/struts-bean.tld
e se o tld esta no local indicado.
jormiz
Agosto 23, 2006, 3:59pm
#19
Sim, isto ta correto, ele vai te dar o endereco do objeto que no caso é o arrayCombo.
Se vc quiser ver se tem algo, tem que percorrer a lista ou imprimir somente o primeiro objeto ou o tamanho do araylist.
Cara, ja tive problemas com isso, de uma verificada nos caminhos, onde esta a lib do struts e etc…
jormiz
Agosto 23, 2006, 4:02pm
#20
o erro ta aqui
<html:select property=“comboBox” >
nao é comboBox e sim combo