【发布时间】:2016-01-07 16:29:35
【问题描述】:
所以我在 Javascript 中有一个既可以是 String 也可以是 int 的变量,我需要将它发送到 java 方法。我虽然如此,因为将数字更改为字符串而不是相反更容易,所以我将变量设置为字符串。我要贴一些代码
这显然是javascript,变量valore是一个既可以是Int又可以是字符串的变量
$(".save").click(function() {
var valore = $("#valore").val();
var connettore = $("#connettore option:selected").text().split(" ").join("");
$.get("select"+connettore+".do", {
nomecampo: $("#colonnaRiferim").val().toLowerCase(),
valore: valore
}, function (data) {
for (var i = 0; i < data.connettore.length; i++) {
var conn = data.connettore[i];
}
}
);
这是Java函数
@RequestMapping("selectCompensi")
@ResponseBody
@Transactional
public ModelWrapper<List<TracciatoCompensi>> selectCompensi(@RequestParam String nomecampo,
@RequestParam String valore){
Session s = hibernateFactory.getCurrentSession();
ModelWrapper<List<TracciatoCompensi>> resp = new ModelWrapper<List<TracciatoCompensi>>();
Criteria c = s.createCriteria(TracciatoCompensi.class)
.add(Restrictions.eq(nomecampo, valore));
List<TracciatoCompensi> aList = (List<TracciatoCompensi>) c.list();
Query query = s.createSQLQuery("INSERT INTO tracciato_compensi_clone (CODICEORDINE, CODICESERVIZIO, CODICEUNIVOCOCOMPONENTE, COEFFICIENTECANONEMESE, "+nomecampo+", compensi1, rev, mod_time, mod_user) ("
+"SELECT CODICEORDINE, CODICESERVIZIO, CODICEUNIVOCOCOMPONENTE, COEFFICIENTECANONEMESE, "+nomecampo+", "+nomecampo+", rev, mod_time, mod_user FROM tracciato_compensi WHERE "+nomecampo+" = '"+valore+"')");
resp.put("connettore", aList);
query.executeUpdate();
return resp;
}
您可以忽略查询,这些东西有效,标准和其余部分也是如此。我的问题似乎很明显,如果 valore 是数字,那么函数崩溃, 我尝试在数字中添加一个随机字符,并尝试使用 toString() 将其转换为 javascript,但即使我使用 jquery 的 isNumeric() 函数并且它说它不是数字,它仍然会崩溃
【问题讨论】:
-
你得到什么错误?
-
如果 valore 为 "5" 或 5 不重要,则查询字符串将为 ...&valore=5
-
把int改成String,JS中的parseInt(val),Java中的Integer.parseInt(val),其实并不难...
-
1) 我收到此错误“java.lang.String cannot be cast to java.lang.Integer” 2) 正如我所说,问题不在于查询 3) 如果我没记错 parseInt将 String 更改为 int 而不是将 int 更改为 String
标签: javascript java jquery string int