Autor |
Mensagem |
|
hibernateTemplate vc tem em qualquer DAO..
Se não tiver, o método getHibernateTEmplate() com certeza tem...
|
 |
|
Se a linha do erro é exatamente essa, pagamentoMensalService é nulo.
Deve estar faltando um setter para pagamentoMensalService no controller..
Seria isso?
|
 |
|
Para mapear manytoone vc precisa disso aqui
Code:
@JoinColumn(name="idhome")
@ManyToOne(fetch=FetchType.LAZY)
public Home getHome() {
return home;
}
O FetchType.LAZY é opcional, mas é recomendável
O oneTomany vc mapeia assim:
Code:
@OneToMany(mappedBy="home")
public List<Chamada> getChamadas() {
return chamadas;
}
Para salvar A lista de chamadas quando salvar o home...
No seu HomeDAO vc pode sobrescrever o updateSaveOrUpdate ou sobrescrever o saveOrUpdate.
Sobrescrevendo o updateSaveOrUpdate
vc coloca dentro do método apenas o comando para atualizar a lista
Code:
public void updateSaveOrUpdate(SaveOrUpdateStrategy save) {
save.saveOrUpdateManaged("chamadas");
}
(A variável save é o parametro do updateSaveOrUpdate)
Atualizando o saveOrUpdate
vc coloca dentro do método:
Code:
public void saveOrUpdate(Home bean) {
new SaveOrUpdateStrategy(hibernateTemplate, bean)
.saveEntity()
.saveOrUpdateManaged("chamadas")
.execute();
}
bean no caso seria o home
|
 |
|
Code:
public ModelAndView salvarPagamentoEmMassa(WebRequestContext request, PagamentoMensalLista pagamentoMensalLista)
{
pagamentoMensalService.saveLista(pagamentoMensalLista);
return pagamentoMensalLista(request);
}
O parâmetro do metodo chega nulo?
ou os atributos dentro da lista estão nulos?
|
 |
|
O JSP estava correto Igor:
Code:
<%@ taglib prefix="n" uri="neo"%>
<%@ taglib prefix="t" uri="template"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<t:tela titulo="Pagamento Mensal Em Massa">
<n:bean name="pagamentoMensalLista">
<n:dataGrid property="listaPagamento">
<t:property name="disciplinaTurma.professor.nome" mode="output"/>
<t:property name="numeroFaltas" mode="input"/>
<t:property name="ehPago" mode="input"/>
<t:property name="horasAula" mode="input"/>
</n:dataGrid>
</n:bean>
<n:submit action="salvarPagamentoEmMassa">Enviar</n:submit>
</t:tela>
|
 |
|
Você terá que verificar qual template está adicionando os botoes que deseja excluir. Por exemplo, o template que colocar os links editar e excluir é o template tabelaResultadosTag.jsp..
Você edita esses templates e remove os botões, e altera o ListagemTag.jsp que é o mais abrangente e coloca os botões lá....
O nome do template tem um padrão. Ele sempre será o nome da tag mais Tag.jsp
Exemplo:
t:janelaResultados -> JanelaResultadosTag.jsp
Obs: Não esqueça de manter o JSP do template no pacote correto
Eles devem ficar no mesmo pacote da classe, dentro da sua aplicação
|
 |
|
O CRUD além de editar e criar tinha a opção consultar. Que envia para uma tela de entrada só que os campos ficam em modo readonly.
O JSP dessa tela será [nome da entidade]Consulta.jsp
E será igual a tela de entrada.
O modo consultar está deprecated, mas se vc desejar usar, vc deve criar um JSP e colocar true no showConsultarLink...
|
 |
|
PS.: Qualquer dúvida pode ser colocada aqui. Tentaremos ajudar sempre que possível
Valew
|
 |
|
O bean seria mais ou menos assim:
Code:
class Home {
Integer numeroChamdas;//campo para setar as chamadas
List<Chamada> chamadas; // lista de chamadas
}
|
 |
|
Coloque um Integer no seu bean para setar o número de chamadas.
Crie um n:submit para enviar os dados para o servidor..
<n:submit action="montarLista"/>
Crie um método montarLista no controller para receber o bean.. Nesse método vc adiciona as Chamadas a lista do bean e redireciona para a página para o usuário escolher as chamadas
Na outra página utilize um c:forEach para criar vários inputs de chamada
dentro do forEach vc coloca
<c:forEach .... varStatus="status">
<t:property name="chamadas[${status.index}]" />
</c:forEach>
O JSP vai ficar mais ou menos assim:
<select name="chamadas[0]">.....</select>
<select name="chamadas[1]">.....</select>
<select name="chamadas[2]">.....</select>
<select name="chamadas[3]">.....</select>
<select name="chamadas[4]">.....</select>
<select name="chamadas[5]">.....</select>
E isso pode ser mapeado para o bean novamente...
|
 |
|
No controller vc deve enviar para o JSP um bean com a lista. E não a lista diretamente
Code:
PagamentoMensalLista pagamentoMensalLista = new PagamentoMensalLista();
pagamentoMensalLista.setListaPagamento(pagamentoMensalService.findAll());
request.setAttribute("pagamentoMensalLista", pagamentoMensalLista);
Dessa forma, o código seguinte funcionará corretamente
Code:
<n:bean name="pagamentoMensalLista">
<n:dataGrid property="listaPagamento">
A linha 1 do exemplo pegará o atributo do escopo pagamentoMensalLista e colocará no bean. A linha 2 utilizará a propriedade listaPagamento do bean para montar o datagrid.
|
 |
|
Igor, eu dei uma olhada com o colega meu que tava mechendo com a impressora. Ele disse que entrou no site da impressora no FAQ. E achou lá como configurar a impressora...
|
 |
|
new QueryBuilder<Date>(...)
.select("max(bean.data)")
.from(Bean.class)
.setUseTranslator(false)
.unique();
O setUseTranslator indica para o query builder não utilizar o tradutor interno e sim o do hibernate. O querybuilder utiliza o tradutor interno quando algum campo na cláusula select é especificado. Esse tradutor permite que sejam carregados apenas os campos desejados de determinado bean. E não o bean inteiro. Exemplo:
new QueryBuilder<Pessoa>(...)
.select("pessoa.nome, pessoa.telefone, pessoa.id")
.from(Pessoa.class)
.list(); //só serão carregadas os campos do select e nao o bean inteiro
No caso de funções de agregaçao como max sum count.. Sempre deve ser desligado o translator
|
 |
|
Isso procede Túlio. O framework tem que instanciar a classe do Model (command), essa classe deve ser uma classe concreta.
É recomendável criar um bean que possua uma lista.
|
 |
|
beleza vinicius.. valew pela contribuição...
|
 |
|