Problema com logic Iterate...Check Box [NEW]

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…

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…

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

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"/>    

É 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;
	}
	
}

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]

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…

A tá agora deu certo… tava faltando o form mesmo…

Brigadasso galera valeu pelo apoio…

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.

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.

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>

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…

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.

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…

o erro ta aqui

<html:select property=“comboBox” >

nao é comboBox e sim combo