我的HTML看起来像:
<form id="idForm3">
<center>
<fieldset style="width:30%;">
<legend>Edit Elements:</legend>
Nome:<input type="text" size="20" maxlength="20" value="" name="TEXT_EDIT">
Preço:<input type="text" size="15" maxlength="15" value="" name="PRICE_EDIT"><br><br>
<input type="button" value="EDIT SELECTED" style="color:blue;"
onclick="var textSelected = document.getElementById('idSelect6').value;
editProductService(textSelected);">
</fieldset>
</center>
</form>
当我这样做时:
@GET
@Produces("application/json")
@Path("/{text}")
public void getJson(@Context HttpServletRequest request, @PathParam("text")String text) {
boolean success;
Tabela2colunasDTO.Produto produtoDTO;
Tabela2colunasDTO dto = new Tabela2colunasDTO();
produtoDTO = dto.getInstanceProduto();
produtoDTO.text = text;
produtoDTO.price = request.getParameter("PRICE_EDIT");
System.out.println("request: "+ request.getParameter("PRICE_EDIT"));
System.out.println("DTO text : "+produtoDTO.text);
System.out.println("DTO price : "+produtoDTO.price);
sucesso = (new ProdutosDAO()).doUpdate(produtoDTO);
System.out.println("editar sucesso: "+success);
}
我试图获取所选文字并在我的数据库中更改其价格,但produtoDTO.price
收到空,produtoDTO.text
完美无缺。
我怀疑GET不能与request.getParameter()
答案 0 :(得分:0)
由于它是GET,因此您的参数需要位于查询字符串中,类似于传入“text”的方式。所以在您的网址末尾:
?文本=财产以后&安培; PRICE_EDIT = somethingElse
答案 1 :(得分:0)
我使用POST方法修改了问题并添加了一行request.getParts();
实际代码是:
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces("application/json")
@Path("/{text}")
public void postEditar3(@Context HttpServletRequest request, @PathParam("text")String texto) {
boolean sucesso;
try {
request.getParts();
Tabela2colunasDTO.Produto produtoDTO;
Tabela2colunasDTO dto = new Tabela2colunasDTO();
produtoDTO = dto.getInstanceProduto();
produtoDTO.text = text;
produtoDTO.price = request.getParameter("PRICE_EDIT");
success = (new ProdutosDAO()).doUpdate(produtoDTO);
System.out.println("passou do sucesso doUpdate: "+success);
} catch (IOException | ServletException e) {
}
}
答案 2 :(得分:0)
你不应该使用@PathParam,你需要@QueryParam