Autor |
Mensagem |
|
Estou fazendo um cadastro de itemLista e queria usar as facilidades de um crud em vez de utilizar multiactioncontroller.
No meu caso eu tenho um bean lista que terá varios itemLista.
Mas queria que a view fosse da seguinte maneira.
Um tela igual a da listagem padrão do crud, só que com um filtro por lista; até ai tudo bem.
A diferença seria que:
- a lista só seria carregada depois do filtro
- eu queria passar o valor do filtro como parametro para a opção de criar um novo item.
Como eu poderia fazer isso?
Valeu e abraços, está dando tudo muito certo com a ferramenta.
Espero ter mais tempo ainda para estuda-la direito.
|
 |
|
Ok, vou tentar suas dicas.
Valeu
|
 |
|
Estou organizando meu jsp assim:
Code:
<t:entrada>
<t:janelaEntrada>
<t:tabelaEntrada columns="1">
<t:property name="idsite"/>
<n:group columns="4" legend="Dados">
<t:property name="site" renderAs="doubleline" colspan="2" />
<t:property name="url" renderAs="doubleline" colspan="2"/>
<t:property name="codigo" renderAs="doubleline"/>
</n:group>
<br>
<n:group columns="2" legend="Servidor">
<t:property name="host" renderAs="doubleline" colspan="2"/>
<t:property name="login" renderAs="doubleline"/>
<t:property name="senha" renderAs="doubleline"/>
</n:group>
<br>
<n:group columns="2" legend="Plano">
<t:property name="plano" renderAs="doubleline"/>
<t:property name="licenca" renderAs="doubleline"/>
<t:property name="inicio" renderAs="doubleline" colspan="2"/>
</n:group>
</t:tabelaEntrada>
</t:janelaEntrada>
</t:entrada>
Porém o que acontece é que o segundo grupo (Servidor), tem seu legend sem ficar em negrito diferente dos outros dois, e o tamanho da area do grupo é diferente da area das outras 2 posições também...
O que poderia ser isso?
|
 |
|
Vou postar aqui como eu fiz, mas está dando erro... Acho que vou acabar colocando um input direto mesmo, tvz usando umas constantes.
Criei uma classe combofixo(que iria usar para todos os casos)
Combofixo:
Code:
@Transient
@DescriptionProperty
public String getDescricao() {
return descricao;
}
@Transient
@Id
public String getValor() {
return valor;
}
public ComboFixo(String valor, String descricao) {
this.valor = valor;
this.descricao = descricao;
}
Na classe cliente fiz um get transient para o combo
Code:
@Transient
//Utilizado para montar o combo de tipo pessoa
public List<ComboFixo> getComboTipoPessoa() {
List<ComboFixo> l = new ArrayList<ComboFixo>();
l.add(new ComboFixo("F","Fisica"));
l.add(new ComboFixo("J","Jurídica"));
return l;
}
e chamei assim no jsp
Code:
<t:property name="tipoPessoa" renderAs="doubleline" itens="${cliente.comboTipoPessoa}"/>
Erro:
Code:
org.springframework.beans.FatalBeanException: Could not instantiate class [org.neo.exemplo.bean.ComboFixo]: no default constructor found; nested exception is java.lang.NoSuchMethodException: org.neo.exemplo.bean.ComboFixo.<init>()
valeu
|
 |
|
Vou fazer o load então para resolver o problema, valeu.
Agora estou com uma outra duvida meio besta...
Eu quero fazer um select com as descrições ("Física", "juridica") e valores ("F", "J") para setar em um campo String tipoPessoa;
Como eu faria isso, sem colocar o select direto em html e sim carregando de uma constante no meu bean?
EDIT: Eu fiz um improviso aqui com uma list mas não sei se é o ideal
|
 |
|
Estou com uma duvida em uma outra tela, segue código:
Modulo:
Code:
@OneToMany(mappedBy="modulo")
public List<Funcionalidade> getFuncionalidades() {
return funcionalidades;
}
Funcionalidade:
Code:
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="idmodulo")
public Modulo getModulo() {
return modulo;
}
ModuloDAO
Code:
@Override
public void saveOrUpdate(Modulo bean) {
new SaveOrUpdateStrategy(getHibernateTemplate(), bean)
.saveEntity()
.saveOrUpdateManaged("funcionalidades")
.execute();
}
@Override
public void updateSaveOrUpdate(SaveOrUpdateStrategy save) {
save.saveOrUpdateManaged("funcionalidades");
}
Problema:
Na view de modulo, ele exibe inicialmente tudo ok, porém quando vai salvar os dados, ele só preenche na tabela de funcionalidade os campos idfuncionalidade e idmodulo.
Eu resolvi dando um load nas funcionalidades da lista mas queria saber se tinha um modo mais facil.
abraços
|
 |
|
Beleza. Era isso mesmo e agora ta funcionando legal.
valeu mesmo.
|
 |
|
Fiz do modo que você sugeriu e dei uma testada rapida... está dando esse erro aqui:
Code:
org.springframework.beans.InvalidPropertyException: Invalid property 'licencas' of bean class [org.neo.exemplo.bean.Funcionalidade]: Getter for property 'licencas' threw exception; nested exception is java.lang.reflect.InvocationTargetException: null
java.lang.reflect.InvocationTargetException
valeu pela ajuda, de qlq modo estarei olhando melhor amanhã de manhã;
|
 |
|
Entendi a ideia... Vou dar uma testada para ver como fica.
|
 |
|
Ok.
Agora, para utilizar o ManytoOne - OneToMany, eu tenho que criar a classe da tabela de ligação não é isso?
E fazendo isso eu não posso mais colocar no jsp
<t:property name="licencas"/>, porque no meu bean eu vou ter uma lista de FuncionalidadeLicenca que não vai carregar os dados da licenca sozinha.
Nesse caso eu teria então que passar uma lista de licenca para o jsp e depois pegar no crud com request e setar manualmente na minha lista de funcionalidadeLicenca?
Ou teria outra maneira?
|
 |
|
Ali ele explica a relação one-to-many... no caso meu problema está em uma many-to-many; mas estou tentando descobrir aqui.
|
 |
|
Estou tentando fazer um mapeamento many-to-many no NEO e estou com algumas dificuldades (Tentei descobrir como fazer o many-to-many usando o one-to-many como rogel falou mas n consegui);
Segue aqui os mapeamentos e o erro encontrado:
Classe Funcionalidade
Code:
@ManyToMany(targetEntity=Licenca.class,cascade={CascadeType.PERSIST, CascadeType.MERGE}
)
@JoinTable(
name="funcionalidade_licenca",
joinColumns={@JoinColumn(name="idfuncionalidade")},
inverseJoinColumns={@JoinColumn(name="idlicenca")}
)
public List<Licenca> getLicencas() {
return licencas;
}
Classe Licenca
Code:
@ManyToMany(
cascade={CascadeType.PERSIST, CascadeType.MERGE},
mappedBy="licencas",
targetEntity=Funcionalidade.class
)
public List<Funcionalidade> getFuncionalidades() {
return funcionalidades;
}
Erro:
Code:
ERROR org.neo.exemplo.controller.FuncionalidadeCrud - Erro ao invocar método doEntrada da classe org.neo.exemplo.controller.FuncionalidadeCrud. Redirecionando para input: entrada
br.com.linkcom.neo.controller.crud.CrudException: Não foi possível usar o saveOrUpdateManaged(String) para org.neo.exemplo.bean.Funcionalidade! Possíveis causas: A os itens do collection não possuem referencia para o pai, O path estava incorreto. O path leva a uma coleção que não tem classe persistente
at br.com.linkcom.neo.controller.crud.CrudController.doSalvar(CrudController.java:273)
DAO:
Code:
@Override
public void saveOrUpdate(Funcionalidade bean) {
new SaveOrUpdateStrategy(getHibernateTemplate(), bean)
.saveEntity()
.saveOrUpdateManaged("licencas")
.execute();
}
@Override
public void updateSaveOrUpdate(SaveOrUpdateStrategy save) {
save.saveOrUpdateManaged("licencas");
}
valeu pela ajuda,
abraços;
|
 |
|
Coloquei meu atributo senha como tipo br.com.linkcom.neo.types.Password;
e está dando esse erro:
Code:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in null: Initialization of bean failed; nested exception is org.hibernate.MappingException: Could not determine type for: br.com.linkcom.neo.types.Password, for columns: [org.hibernate.mapping.Column(senha)]
org.hibernate.MappingException: Could not determine type for: br.com.linkcom.neo.types.Password, for columns: [org.hibernate.mapping.Column(senha)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)
at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
O que posso ter feito errado?
|
 |
|
Ok mas no banco eu deixo como String em todos os casos?
É isso?
|
 |
|
Os novos tipos que vocês criaram, como Telefone, CPF e etc... já tem algum tipo de documentação disponivel para eu ver o funcionamento?
valeu pela ajuda;
abraços
|
 |
|