Ola gostaria de saber como faço para pegar uma variavel exibida em um jsp ${solicitacao } e envia-la ao back-end com o vraptor
eu sei como passar objetos do controller para a view e passar da view para o controle utilizando inputs mas não sei como pegar uma variavel que ja esta no jsp fora de um form para envia-la ao controller
O vraptor espera que vc coloque os names dos inputs conforme o seu objeto
ou seja…
<input type="text" name="produto.nome" value="${produto.nome}"
vc precisa apenas colocar o Produto produto no método controler ele msm instancia o Objeto pra vc e add no parametro
Ok,
vc pode fazer assim
${solicitacao } = vc tem o valor solicitante certo?
vc pode mandar ele por ajax assim
var datapost = {"solicitante" : solicitante} (objeto json)
$.ajax({
url : "urlQueBateNoController",
type : "GET, POST....",
data : dataPost,
message : {"message" : "Cadastro com sucesso!!!"}
});
mas amigo minha ideia é enviar um objeto inteiro colocar input por input fica foda.
desculpe o “flood” mas teria algo mais objetivo?
Não há nenhum objeto no vraptor para pescar essa variavel na view não ?
Gabriel, boa tarde…
Para você entender melhor: o servidor não consegue pegar as coisas de um JSP pq o JSP depois vai gerar um HTML, ou seja, o VRaptor não tem como pegar isso. Você vai precisar enviá-lo ao servidor em uma requisição. Existem duas formas de fazer isso. O nosso amigo kadu já te disse como.
Se você quer passar um objeto inteiro e recebê-lo na outra ponta, tome cuidado pois o JSP vai fazer um toString() de todos os objetos que você colocar lá.
Caso seja um objeto mapeado pelo Hibernate, eu sugiro o seguinte:
Crie um Converter do VRaptor que vai receber como dependência o DAO dessa sua entidade e então você passa somente o ID dessa entidade e consegue receber a mesma instância depois em outra requisição. Algo assim:
// JSP
<input type="hidden" name="coordenador" value="${coordenadorQueVeioDoResponse.id}" />
// Converter
@Convert(Coordenador.class)
public class CoordenadorConverter implements Converter<Coordenador> {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final CoordenadorDAO coordenadorDAO;
public CoordenadorConverter(CoordenadorDAO coordenadorDAO) {
this.coordenadorDAO = coordenadorDAO;
}
@Override
public Coordenador convert(String value, Class<? extends Coordenador> type,
ResourceBundle bundle) {
try {
return coordenadorDAO.get(Long.parseLong(value));
} catch (NumberFormatException e) {
logger.error("Cannot convert '" + value + "' to java.lang.Long.", e);
throw e;
}
}
}
// Action / Controller
@Get("/faz/algo")
public void fazAlgo(Coordenador coordenador){
// coordenador já vai estar instanciado e com tudo carregado.
}
me desculpa… mas ainda não entendi o que vc realmente quer
EDIT
Ja resolvi o problema fiz um workaround vlw pelo tempo de vocês
não dá pra enviar um objeto inteiro no request pq no browser do cara não existem objetos, só html e texto.
vc tem que enviar campo por campo, ou enviar o id do objeto e recarregar o objeto no banco de dados. Enviar o id é mais comum