Funciona no JAVA 1.4 e 1.5 mas não funciona no 6

Prezados,
Alguém poderia me ajudar? Estou tentando descobrir porque um erro ocorre quando utilizo o java 6 para executar o tomcat, e não ocorre quando utilizo o java 1.4 ou 1.5. Mesmo compilando em versões diferentes este erro ocorre, vou colocar o erro que é informado pelo console do navegador, o trecho do código informado no erro e o código completo do javascript.

Erro informado navegador:
SCRIPT5007: Não é possível obter valor da propriedade ‘options’: o objeto é nulo ou não definido
AtualizarUsuario.do?action=exibir&function=incluir, linha 496 Caractere 4

Trecho do código:

495 function validaCheckConsultor() {
496 			var objPerfil = this.document.forms[0].perfil.options[this.document.forms[0].perfil.selectedIndex].value;
497			if (objPerfil == 1 || objPerfil == 2) {
498				this.document.forms[0].consultor.checked = false;
499				this.document.forms[0].consultor.disabled = 'disabled';
500			} else if (this.document.forms[0].consultor != null) {
501				// ... mas habilita para os demais
502				this.document.forms[0].consultor.disabled = false;
503			}
504		}

Código completo:

<script language="JavaScript">
		<!-- //
		
		function LocalidadeOcorrencia(id, descricao) {
			this.id = id;
			this.descricao = descricao;
		}

		var subOrgao = new Array();
		<logic:present name="listarInstituicao">
		<logic:iterate name="listarInstituicao" id="subOrgao" type="br.gov.serpro.ouvidoria.model.SubOrgao" indexId="i">
		subOrgao[<%=i%>] = new Array();
		<% int j = 0; %>
		<logic:iterate name="subOrgao" property="listaLocalidadeOcorrencia" id="localidade" type="br.gov.serpro.ouvidoria.model.LocalidadeOcorrencia">
		<% 	if ( (funcionarioLogado.getNivelAtuacao() == br.gov.serpro.ouvidoria.model.Funcionario.NA_ORGAO) || ( funcionarioLogado.getListaLocalidadeOcorrencia() != null && funcionarioLogado.getListaLocalidadeOcorrencia().contains(localidade) ) ) { %>
				subOrgao[<%=i%>][<%=j++%>] = new LocalidadeOcorrencia('<bean:write name="localidade" property="id"/>', '<bean:write name="localidade" property="descricao"/>' );
		<%  } %>   
		</logic:iterate></logic:iterate>
		</logic:present>

		function removeOptions(optSelect) {
			optSelect.selectedIndex = -1; 
			emptyOptions(optSelect);
		}
		
		function emptyOptions( optSelect ) {
			while (optSelect.length > 0) {
		    	optSelect.options[0] = null;
			}
		}
		
		function populaLocalidadeOcorrecia() {
			removeOptions( document.forms[0].elements["localidade"] );
			
			var i = document.forms[0].elements["suborgao"].selectedIndex;
			for(j=0; j< subOrgao[i].length; j++ ) {
				document.forms[0].elements["localidade"].options[j] = new Option(subOrgao[i][j].descricao, subOrgao[i][j].id);
			}
		}

		function Funcionalidade(text, value) {
			this.text = text;
			this.value = value;
		}
		
		var acessoDefault = new Array();
		
		<logic:iterate name="listarPerfil" id="perfil" type="br.gov.serpro.ouvidoria.model.Perfil" indexId="i">
		acessoDefault[<%=i%>] 	 = new Array(2);
		acessoDefault[<%=i%>][0] = <bean:write name="perfil" property="id"/>;
		acessoDefault[<%=i%>][1] = new Array();
		<logic:iterate name="perfil" property="listaFuncionalidade" id="funcionalidade" type="br.gov.serpro.ouvidoria.model.Funcionalidade" indexId="j">
		acessoDefault[<%=i%>][1][<%=j%>] = new Funcionalidade('<bean:write name="funcionalidade" property="descricao"/>', '<bean:write name="funcionalidade" property="id"/>' );
		</logic:iterate>
		</logic:iterate>

		var acessoFuncionario = new Array();
		<logic:iterate name="object" property="listaFuncionalidade" id="funcionalidade" type="br.gov.serpro.ouvidoria.model.Funcionalidade" indexId="i">
		acessoFuncionario[<%=i%>] = new Funcionalidade('<bean:write name="funcionalidade" property="descricao"/>', '<bean:write name="funcionalidade" property="id"/>' );
		</logic:iterate>
		
		function atualizaAcessosFuncionario() {

			var funcionalidades = this.document.forms[0].funcionalidades;
			for(i=0; i<funcionalidades.length; i++) {
				
				funcionalidades[i].checked = false;
				
				for( j=0; j<acessoFuncionario.length; j++ ) {
					if ( funcionalidades[i].value == acessoFuncionario[j].value ) {
						funcionalidades[i].checked = true;
						break;
					}
				}
			}
		}

		function atualizaAcessos() {
			
			atualizaAcessosFuncionario();

			var perfil    = null;
			var objPerfil = this.document.forms[0].perfil.options[this.document.forms[0].perfil.selectedIndex].value;
			
			for( j=0; j<acessoDefault.length; j++ ) {
				
				if( objPerfil == acessoDefault[j][0] ) {
					perfil = j;
					break;
				}
			}
			
			var funcionalidades = this.document.forms[0].funcionalidades;
			
			for(i=0; i<funcionalidades.length; i++) {
				funcionalidades[i].checked = false;				
			}
			

			for(i=0; i<funcionalidades.length; i++) {

				if ( funcionalidades[i].checked ) continue;
				
				for( j=0; j<acessoDefault[perfil][1].length; j++ ) {
					if ( funcionalidades[i].value == acessoDefault[perfil][1][j].value ) {
						funcionalidades[i].checked = true;
						break;
					}
				}
			}
			
			validaCheckConsultor();
			
			exibeTipos();
		}
		
		function validaCheckConsultor() {
			var objPerfil = this.document.forms[0].perfil.options[this.document.forms[0].perfil.selectedIndex].value;
			if (objPerfil == 1 || objPerfil == 2) {
				this.document.forms[0].consultor.checked = false;
				this.document.forms[0].consultor.disabled = 'disabled';
			} else if (this.document.forms[0].consultor != null) {
				// ... mas habilita para os demais
				this.document.forms[0].consultor.disabled = false;
			}
		}
		
		var subOrgaoFunc = new Array();
		var localidadeFunc = new Array();

		function populaLocalidadesFunc() {
		
			var instituicaoFunc = this.document.forms[0].instituicaoFunc;
			while(instituicaoFunc.length > 0) {
				instituicaoFunc.options[0] = null;
			}
			
			var k = 0;
			for( i=0; i<localidadeFunc.length; i++ ) {
				instituicaoFunc.options[k++] = new Option(localidadeFunc[i][0].text, "O" + i + "_" + localidadeFunc[i][0].value );
				for (j=0; j<localidadeFunc[i][1].length; j++) {
					instituicaoFunc.options[k++] = new Option("---" + localidadeFunc[i][1][j].text, "L" + i + "|" + j + "_" + localidadeFunc[i][1][j].value );
				}
			}
		}
		
		function selecionaLocalidadesFunc() {
			var instituicaoFunc = this.document.forms[0].instituicaoFunc;
			for( i=0; i<instituicaoFunc.length; i++ ) {
				instituicaoFunc.options[i].selected = true;
			}
		}

		
		<logic:present name="object" property="listaSubOrgaosAtivos">
		<% int i = 0; %>
		<logic:iterate name="object" id="subOrgao" property="listaSubOrgaosAtivos" type="br.gov.serpro.ouvidoria.model.SubOrgao">
		<% 	if ((funcionarioLogado.getNivelAtuacao() == br.gov.serpro.ouvidoria.model.Funcionario.NA_ORGAO) || funcionarioLogado.getPerfil().equals(br.gov.serpro.ouvidoria.model.Perfil.ADMINISTRADOR) || ( funcionarioLogado.getListaInstituicao() != null && funcionarioLogado.getListaInstituicao().contains(subOrgao) ) ) { %>
				localidadeFunc[<%=i%>]    = new Array(2);
				localidadeFunc[<%=i%>][0] = new Option( '<bean:write name="subOrgao" property="descricao"/>','<bean:write name="subOrgao" property="id"/>');
				localidadeFunc[<%=i%>][1] = new Array();
				<% int j = 0; %>
				<logic:iterate name="object" property="listaLocalidadeOcorrencia" id="localidades" type="br.gov.serpro.ouvidoria.model.LocalidadeOcorrencia">
				<% if (localidades.getSubOrgao().equals(subOrgao) && (funcionarioLogado.getNivelAtuacao() == br.gov.serpro.ouvidoria.model.Funcionario.NA_ORGAO) || funcionarioLogado.getPerfil().equals(br.gov.serpro.ouvidoria.model.Perfil.ADMINISTRADOR) || (funcionarioLogado.getListaLocalidadeOcorrencia() != null && funcionarioLogado.getListaLocalidadeOcorrencia().contains(localidades) ) ) { %>
					localidadeFunc[<%=i%>][1][<%=j++%>] = new Option('<bean:write name="localidades" property="descricao"/>', '<bean:write name="localidades" property="id"/>' );
				<% } %>
				</logic:iterate>
		<% 
				i++;
			}
		%>
		</logic:iterate>
		</logic:present>

		function adicionaSubOrgao() {

			var objSubOrgao = this.document.forms[0].suborgao.options[this.document.forms[0].suborgao.selectedIndex];
			var objLocalidade = this.document.forms[0].localidade;
			
			var temSubOrgao = false;
			for( i=0; i<subOrgaoFunc.length; i++ ) {
				if ( subOrgaoFunc[i].value == objSubOrgao.value ) {
					temSubOrgao = true;
					break;
				}
			}
			
			if ( !temSubOrgao ) {
				subOrgaoFunc[subOrgaoFunc.length] = objSubOrgao;
			}

			
			temSubOrgao = false;
			var subOrgaoIndex = 0;
			for( subOrgaoIndex=0; subOrgaoIndex <localidadeFunc.length; subOrgaoIndex++ ) {
				if ( localidadeFunc[subOrgaoIndex][0].value == objSubOrgao.value ) {
					temSubOrgao = true;		
					break;
				}
			}

			if ( !temSubOrgao ) {
				localidadeFunc[subOrgaoIndex] = new Array(2);
				localidadeFunc[subOrgaoIndex][0] = objSubOrgao;
				localidadeFunc[subOrgaoIndex][1] = new Array();
			}
			
			var temLocalidade = false;
			for( i=0; i<objLocalidade.length; i++ ) {
				
				temLocalidade = false;
				if ( objLocalidade[i].selected ) {

					for (j=0; j<localidadeFunc[subOrgaoIndex][1].length; j++) {
						if ( objLocalidade[i].value == localidadeFunc[subOrgaoIndex][1][j].value ) {
							temLocalidade = true;
							break;
						}
					}
					
					if ( !temLocalidade ) {
						localidadeFunc[subOrgaoIndex][1][(localidadeFunc[subOrgaoIndex][1].length)] = objLocalidade[i];
					}
					
				}
			}

			populaLocalidadesFunc();

		}
		
		function moveArray(array, ini) {
			if( array[ini].value.indexOf("O") == 0 ) {
				do {
					array[ini] = null;
				} while ( array[ini] != null && array[ini].value.indexOf("O") );
			} else {
				array[ini] = null;
			}
			return array;
		}
		
		function removeSubOrgao() {

			var objLocalidade = this.document.forms[0].instituicaoFunc;

			for( i = objLocalidade.length - 1; i >= 0; i-- ) {
				if ( objLocalidade[i].selected ) {
					objLocalidade = moveArray(objLocalidade, i );
				}
			}
			
			localidadeFunc = new Array();
			var k = -1;
			var j = 0;
			for( i = 0; i<objLocalidade.length; i++ ) {
				if ( objLocalidade[i].value.indexOf("O") == 0 ) {
					k++;
					localidadeFunc[k] = new Array(2);
					localidadeFunc[k][0] = new Option(objLocalidade[i].text, objLocalidade[i].value.substring(objLocalidade[i].value.indexOf("_") + 1));
					localidadeFunc[k][1] = new Array();
					j = 0;
				} else {
					localidadeFunc[k][1][j++] = new Option(objLocalidade[i].text.substr(3), objLocalidade[i].value.substring(objLocalidade[i].value.indexOf("_") + 1));
				}
			}

			populaLocalidadesFunc();
		
		}


		function exibeOrgao() {
			var display = true;
			
			if(document.forms[0].nivel[0]) {
				display = document.forms[0].nivel[1].checked;
			}

		    if(display) {
		        document.getElementById("niveis").style.display='';
		    } else {
		        document.getElementById("niveis").style.display='none';
 		    }
 		    
			window.parent.document.getElementById("detalhe").style.height = this.document.body.scrollHeight;
			document.forms[0].elements['suborgao'].selectedIndex = -1;
		}

		function exibeTipos() {
			var funcionalidades = document.forms[0].funcionalidades;
        	if (funcionalidades[funcionalidades.length - 1].checked) {
		        document.getElementById("tipos").style.display='';
		    } else {
		        document.getElementById("tipos").style.display='none';
		        document.forms[0].tipoMensagem.selectedIndex = -1;
		        document.forms[0].tipoAssunto.selectedIndex = -1;
		    }
			window.parent.document.getElementById("detalhe").style.height = this.document.body.scrollHeight;
		}

		function validaFormulario() {
		
			var innerHtmlMsgErros = '';

			var id = document.forms[0].id.value;
			var nome = document.forms[0].nome.value;
			var login = document.forms[0].login.value;
			var senha = document.forms[0].senha.value;
			var instituicaoFunc = document.forms[0].instituicaoFunc;
			var perfil = document.forms[0].perfil.value;
			var funcionalidades = document.forms[0].funcionalidades;
			var nivel = document.forms[0].nivel;
			var motivo = document.forms[0].motivo.value;
			var tipoAssunto = document.forms[0].tipoAssunto;
			var tipoMensagem = document.forms[0].tipoMensagem;
			var consultor = document.forms[0].consultor; 
						
            innerHtmlMsgErros += CriticaString( document.forms[0].nome, 10, 60, 'Nome do Usuário ' );

	        if (login == null || login == "" || !validaCPF(login) ) {
				innerHtmlMsgErros += formataErro('CPF inválido, utilize somente n&uacute;meros');
	        } 
	
			if ( id == null || id == "" ) {
	            innerHtmlMsgErros += CriticaString( document.forms[0].elements["senha"], 6, 8, 'Senha' );
			}
				
			
	        if ( nivel[1] == undefined || nivel[1].checked) {
	            if (instituicaoFunc == null || instituicaoFunc.length == 0) {
					innerHtmlMsgErros += formataErro('Selecione ao menos um Sub-Órgão');
	            }
			} 
			else {
	            if ( ( perfil != null && perfil == "5" ) && (motivo == null || motivo == "")) {
					innerHtmlMsgErros += formataErro('Preencha o motivo pelo qual um Especialista tem acesso ao Orgão'); 
				}
	        }
	        
	        if ( perfil != "7" ){
				for( i = 0; i < funcionalidades.length; i++) {									
					if ( (funcionalidades[i].checked) && (funcionalidades[i].value == "40" || funcionalidades[i].value == "41") ) {
						innerHtmlMsgErros += formataErro('As funcionalidades Manter Órgão e Parametros Gerais só podem ser atribuidas ao Perfil Administrador');
						break;
					}			
				}
			}


	        if (funcionalidades == null || funcionalidades.length == 0) {
				innerHtmlMsgErros += formataErro('Selecione as funcionalidades para o Funcionario'); 
	        } 
	        else {
	        	if (
	        		funcionalidades[funcionalidades.length - 1].checked
	        		&& perfil != "2"
	        		&& perfil != "1"
	        		) {
					var tipoAssunto  = tipoAssunto.selectedIndex;
					var tipoMensagem = tipoMensagem.selectedIndex;
					
					if ( -1 > ( tipoAssunto + tipoMensagem ) ) {
						innerHtmlMsgErros += formataErro('Para o Perfil escolhido, deve ser selecionado ao menos um Assunto ou Tipo de Mensagem');
					}
	        	}
	        	else {
					var tipoAssunto  = tipoAssunto.selectedIndex;
					var tipoMensagem = tipoMensagem.selectedIndex;
	        	}
	        }
	
			if( innerHtmlMsgErros == "" ) {
				abreConfirmacao("salvar");
			} else {
				var texto = innerHtmlMsgErros;
				abreAlerta(texto);
			}
		
			setFocusById('cpo');
			
			if (consultor != null && ((perfil == 1 || perfil == 2) && consultor.checked == true)) {
				consultor.checked = false;
				consultor.disabled = 'disabled';
			}
		}
		
	    function salvar() {
			selecionaLocalidadesFunc();
			document.forms[0].submit();
			return true;
		}
		
		
		
		
		function verificaAcionamento(){
			//lanca a caixa avisando que o usuario tem
			//acionamentos atrelados a ele
			<logic:present name="temAcionamento">
				abreAlertaGeral("Mudança de Situação","O usuário possui acionamentos. Esses acionamentos serão redirecionados.");
			</logic:present>
		}

		var error = false;
		<logic:messagesPresent>		
			error = true;
			
			var innerHtmlMsgErros = '';
			<html:messages id="message" message="false">
				innerHtmlMsgErros += formataErro('<%= message %>');
			</html:messages>
			abreAlerta(innerHtmlMsgErros);
		</logic:messagesPresent>	


	    function onLoad() {
	    
	    	validaCheckConsultor();
	    
	    	try {
	    		var userId = document.forms[0].elements['id'].value;
	    		
				populaLocalidadesFunc();
				exibeOrgao();
				exibeTipos();
				if (userId != "" || error == true) {
					atualizaAcessosFuncionario();
				} 
				else {
					atualizaAcessos();
				}
				
				document.forms[0].elements['suborgao'].selectedIndex = -1;
			} catch(e) {}
			try { textCounter(this.document.forms[0].elements['motivo'], this.document.getElementById('contador'), 500); } catch(e) {}

			setFocusById('cpo')
	    }

	    // -->
		</script>

Agradeço a ajuda desde já…

Se você utilizar a tag [code] terá mais probabilidade de ser respondido.

mel dels

Felipe,

Altere seu post inicial…inclua o código entre as tags code…e

felip3gustavo, acho melhor você resumir seu problema ao ponto certo.

[quote=robinsonbsilva]Felipe,

Altere seu post inicial…inclua o código entre as tags code…e[/quote]

Desculpe pessoal, coisa de novato…

Eu preciso apenas que a aplicação funcione com o java 6 ou 7, mas não sei identificar o problema ao certo. No java 1.4 ou 5 não apresenta erro, mas utilizando o java 6 dá problema ao clicar no botão de incluir usuário, não aparece nada, e no console de debug do browser aparece esta mensagem “SCRIPT5007: Não é possível obter valor da propriedade ‘options’: o objeto é nulo ou não definido AtualizarUsuario.do?action=exibir&function=incluir, linha 496 Caractere 4”

Pode ser imcompatibilidade do struts com a versão do Java? Querem que eu poste como está configurado o struts para este formulário?