我正在使用 liferay 开发自定义 portlet (mvc portlet) 我的问题是我在 HTML 中的 jsp 页面中有一个表单,我想要的是验证表单的某些字段。并在提交按钮上将其重定向到另一个页面。我所做的验证正在工作,但是当我单击提交按钮时,它会重定向到另一个页面,并且在该页面上它只显示来自 liferay 的默认错误。我想要的是如果请求未完成且在验证为假的字段附近出现错误消息,则显示相同的页面。
我该如何解决这个问题?
这是我在动作类中添加方法时检查验证的代码
public void addRestaurant(ActionRequest 请求,ActionResponse 响应){
log.info("Inside addRegistration");
List<String> errors = new ArrayList<String>();
restaurant rest = RestaurantActionUtil
.getRestaurantFromRequest(request);
boolean restValid = RestaurantValidator
.validateRestaurant(rest, errors);
if (restValid) {
try {
log.info(rest);
restaurant test = restaurantLocalServiceUtil
.addrestaurant(rest);
if (test == null) {
log.error("Restaurant was Found Null");
response.setRenderParameter("jspPage", errorJSP);
return;
}
} catch (SystemException e) {
log.error(e);
/*
* If there is an error then divert the control to the error
* page.
*/
response.setRenderParameter("jspPage", errorJSP);
return;
}
SessionMessages.add(request, "restaurant-added");
return;
} else {
for (String error : errors) {
SessionErrors.add(request, error);
}
SessionErrors.add(request, "error-while-adding");
request.setAttribute("rest", rest);
return;
}
}
这是我的验证器类
公共类 RestaurantValidator {
公共静态布尔验证餐厅(餐厅休息,列出错误){
boolean valid=true ;
if (Validator.isNull(rest.getName())) {
errors.add("Name-required");
valid = false;
}
if (Validator.isNull(rest.getLicensekey())) {
errors.add("license-key-required");
valid = false;
}
以下是我的 view.jsp 代码
餐厅名称* " />
<span class="help-block">help block</span>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<label>License Key<span class="f_req">*</span></label>
<liferay-ui:error key="license-key-required" message="license-key-required" />
<input type="text" name="licensekey" class="span8" value="<%=restaurantOBJ.getLicensekey() %>"/>
</div>
</div>
错误消息以以下方式显示在重定向页面上,而不是在同一页面上,我希望名称文本框附近出现错误,错误为“Name_required”
错误消息以以下方式显示在重定向页面上,而不是在同一页面上,我希望名称文本框附近出现错误,错误为“Name_required”。
我想要的是当名称为空时,它不应该提交表单并在我的view.jsp
页面中的名称文本框附近给出错误。