最近学习ofbiz,各种不习惯,尤其是ftl页面和后台的交互,怎么传值怎么返回值,往往要搞半天,下面是今天做的一个ajax例子,只是简单的搞通ofbiz使用ajax的流程。
下面开始:
ftl页面
<td>账单编号<input id="accountId" name="accountId" type="text" onblur="checkAccount();"/><font id="rValue"></font></td>
$.ajax({
type: "post",
url: "<@ofbizUrl>checkAccount</@ofbizUrl>",
data: "accountId="+$("#accountId").val(),
success: function (data) {
if(data.status && data.status == "success"){
//alert(data.returnMessage);
$("#rValue").css("color","red");
$("#rValue").text(data.returnMessage);
}
}
});
}
controller 页面
<request-map uri="checkAccount">
<security auth="false" https="false"/>
<event type="java" invoke="checkAccount" path="org.ofbiz.life.student.AccountService"/>
<response name="success" type="none"></response>
<response name="error" type="none"></response>
</request-map>
service的java
@SuppressWarnings("unchecked")
public static String checkAccount(HttpServletRequest request,HttpServletResponse response){
Delegator delegator = (Delegator) request.getAttribute("delegator");
Map outMap = FastMap.newInstance();
String accountId = request.getParameter("accountId");
try {
GenericValue gv = delegator.findByPrimaryKey("Account",UtilMisc.toMap("accountId",
accountId));
if(gv!=null){
outMap.put("returnMessage","数据库存在该账户");
}else{
outMap.put("returnMessage","数据库不存在该账户");
}
return JsonUtil.writeSuccessJson(outMap,response);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "error";
}
writeSuccessJson这个方法将map转成json字符串,并通过response write出来
response中返回的json字符串是这样的{"returnMessage":"数据库存在该账户","status":"success"}
到此为止一个简单的ajax就实现了