Bom dia pessoal
É o seguinte, tenho duas telas;
Na primeira tenho a seguinte rotina.
Interface:
<h:outputText value="Selecione um Responsável" styleClass="titulo" />
<h:panelGrid columns="2" id="campos" width="500">
<h:outputLabel value="Responsáveis:" />
<t:column>
<h:inputText binding="#{ vinculacao.idClienteResp }"
id="idClienteResp" size="6"
onfocus="document.getElementById( 'form:responsavel' ).focus();"
styleClass="transparente">
</h:inputText>
<f:verbatim> </f:verbatim>
<s:tableSuggestAjax id="responsavel"
suggestedItemsMethod="#{ vinculacao.listResponsaveis}"
maxlength="50" var="list" size="55" betweenKeyUp="300"
startRequest="2" charset="utf-8"
binding="#{ vinculacao.responsavel }">
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Id" />
</f:facet>
<s:outputText for="idClienteResp" style="font-size:8px;"
label="#{list.id}" />
</t:column>
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Nome" />
</f:facet>
<s:outputText for="responsavel" style="font-size:8px;"
label="#{list.nome}" />
</t:column>
</s:tableSuggestAjax>
</t:column>
</h:panelGrid>
<br>
<br>
<hr width="100%" size="1">
<br>
<div class="filterTable2">
<h:outputLabel value="Escolha uma Operação" styleClass="titulo" />
<t:dataTable var="lista" rowClasses="row1, row2"
value="#{vinculacao.oper}" id="vinculacao">
<t:column>
<f:facet name="header">
</f:facet>
<h:selectBooleanCheckbox id="check" value="#{lista.check}"
title="Clique para vincular a Operação com o Responsável">
<a4j:support action="#{vinculacao.addItens}" event="onclick" />
</h:selectBooleanCheckbox>
</t:column>
<t:column>
<f:facet name="header">
<h:outputLabel value="" />
</f:facet>
<h:outputLabel id="descricao" value="#{lista.descricao}" />
</t:column>
</t:dataTable>
Bean:
public void addItens() {
String nomeResp = (String) this.responsavel.getValue();
TsClienteResp resp = new TsClienteRespDao().getIdClienteResp(nomeResp);
vincular(resp.getIdClienteResp());
}
public void vincular(Integer idClieResp) {
try {
Help.getParan("oper");
TsClienteRespOper resp = new TsClienteRespOper();
TsClienteOper operAux = new TsClienteOper();
for (int i = 0; i < oper.size(); i++) {
operAux = oper.get(i);
if (operAux.getCheck().equals(true)) {
resp.setIdClienteOper(operAux.getIdClienteOper());
}
}
resp.setIdClienteResp(idClieResp);
Integer id = new BaseDao()
.getInt("SELECT MAX( R.IDCLIENTERESPOPER ) FROM TSCLIENTERESPOPER R") + 1;
new BaseDao().atualizaChaves("TSCLIENTERESPOPER", id);
resp.setIdClienteRespOper(id);
new BaseDao().insert(resp);
MessageHelper.addMessage("Vinculado com sucesso!", 1);
} catch (Exception e) {
e.printStackTrace();
MessageHelper.addMessage("Erro ao Vincular operação!", 2);
}
this.goCadOperacao();
}
Isso funciona certinho, faz a vinculação.
O problema está na hora de desvincular. A principio segui a mesma idéia, mas qdo eu clico no botão para remover, dá a mesangem que algo está null e não acho nem com o debug, pois não para no breakpoint e já aparece a msg de null. Se a rotina ficasse igual a primeira, só de eu clicar no checkbox ele já efetue a remoção…
interface:
<h:outputText value="Selecione um Responsável" styleClass="titulo" />
<h:panelGrid columns="3" id="campos" width="580">
<h:outputLabel value="Responsáveis:" />
<t:column>
<h:inputText binding="#{vinculacao.idClienteResp }"
id="idClienteResp" size="6"
onfocus="document.getElementById( 'form:responsavel' ).focus();"
styleClass="transparente">
</h:inputText>
<f:verbatim> </f:verbatim>
<s:tableSuggestAjax id="responsavel"
suggestedItemsMethod="#{vinculacao.listResponsaveis}"
maxlength="50" var="list" size="55" betweenKeyUp="300"
startRequest="2" charset="utf-8"
binding="#{vinculacao.responsavel }">
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Id" />
</f:facet>
<s:outputText for="idClienteResp" style="font-size:8px;"
label="#{list.id}" />
</t:column>
<t:column>
<f:facet name="header">
<s:outputText style="font-size:8;" value="Nome" />
</f:facet>
<s:outputText for="responsavel" style="font-size:8px;"
label="#{list.nome}" />
</t:column>
</s:tableSuggestAjax>
</t:column>
<h:commandButton action="#{vinculacao.carregarDados}"
value="Carregar Dados" />
</h:panelGrid>
<br>
<br>
<hr width="100%" size="1">
<br>
<div class="filterTable2">
<h:outputLabel value="Escolha uma Operação" styleClass="titulo" />
<t:dataTable var="lista" rowClasses="row1, row2"
value="#{vinculacao.operacoes}" id="vinculacao">
<t:column>
<f:facet name="header">
</f:facet>
<h:selectBooleanCheckbox id="check" value="#{lista.check}"
title="Clique para vincular a Operação com o Responsável">
<a4j:support action="#{vinculacao.remItens}" event="onclick"/>
</h:selectBooleanCheckbox>
</t:column>
<t:column>
<f:facet name="header">
<h:outputLabel value="" />
</f:facet>
<h:outputLabel id="descricao" value="#{lista.operacao.descricao}" />
</t:column>
</t:dataTable>
Bean:
public String carregarDados() {
String nomeResp = (String) this.responsavel.getValue();
TsClienteResp resp = new TsClienteRespDao().getIdClienteResp(nomeResp);
this.operacoes = new TsClienteRespOperDao().getVincByClienteResp(resp
.getIdClienteResp());
return "removerVinculacao";
}
public void desVincular(Integer idClienteResp) {
try {
Help.getParan("operacoes");
TsClienteRespOper operAux = new TsClienteRespOper();
for (int i = 0; i < operacoes.size(); i++) {
operAux = operacoes.get(i);
if (operAux.getCheck().equals(true)) {
new TsClienteRespOperDao().removeVincOper(operAux.getIdClienteRespOper());
}
}
} catch (Exception e) {
e.printStackTrace();
MessageHelper.addMessage("Erro ao executar operação!", 2);
}
this.goRemoverVinculacao();
}
public void remItens() {
String nomeResp = (String) this.responsavel.getValue();
TsClienteResp resp = new TsClienteRespDao().getIdClienteResp(nomeResp);
desVincular(resp.getIdClienteResp());
}
Estou usando o JSF 1.2.
Será que alguém pode me dar uma luz aí? Estou com o sistema parado.