1

我正在使用 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页面中的名称文本框附近给出错误。

4

1 回答 1

0

我会尝试回答您的问题,如果验证失败,请尝试actionResponse.setRenderParameter("valid", "NO");在您的方法中设置 a 。addRestaurant

并在方法中获取此参数并在此方法中doView进行相应设置renderPageinclude(renderPage, renderRequest, renderResponse);在方法的末尾doView

如果您可以以良好的格式提供问题中的所有信息,例如验证器方法<aui:form>和调用的 javascript 方法,onSubmit那么我们可以继续寻找其他解决方案。

同时,您可以尝试一下,看看它是否有效。:-)

于 2012-10-25T13:25:58.040 回答