如何在liferay6中使用自定义portlet为html表单使用自定义验证消息?

时间:2012-10-25 06:28:50

标签: validation jsp liferay portlet liferay-6

我正在使用liferay来开发自定义portlet(mvc portlet)我的问题是我在HTML中的jsp页面中有一个表单,而我想要的是验证表单的某些字段。在提交​​按钮上它重定向到另一个页面。我已经完成的验证工作正在发生,但是当点击提交按钮时,它会重定向到另一个页面,在该页面上它只是显示来自liferay的默认错误。我想要的是,如果请求没有完成,并且在验证错误的字段附近显示错误消息,则显示相同的页面。

我该如何解决这个问题?

这是我在动作类

中添加方法时检查验证的代码

public void addRestaurant(ActionRequest request,ActionResponse response){

    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 {

public static boolean validateRestaurant(餐厅休息,列出错误){

    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代码

                                                                             餐厅名称*                                                                                  “/&gt;

                                    <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-textbox附近发生错误,错误为“Name_required”。

enter image description here

我想要的是当名称为空时,它不应该提交表单并在view.jsp页面中的名称文本框附近给出错误。

1 个答案:

答案 0 :(得分:0)

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

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

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

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