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ú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á…