重定向到MVCPortlet中的renderURL不起作用

时间:2015-11-06 08:46:39

标签: forms liferay portlet

我正在构建一个MVCPortlet Liferay 6.2 portlet。我有一个带2个按钮的表格。第一个按钮验证表单(提交)。第二个重定向到jsp。我很难让它发挥作用:

<portlet:actionURL name="mainSubmit" var="mainSubmitURL"></portlet:actionURL>

<portlet:renderURL var="viewLogsURL">
        <portlet:param name="mvcPath" value="/jsp/logs.jsp"/> 
</portlet:renderURL>

<form ... action="<%=mainSubmitURL%>">
...
<div class="controls-row  ">
             <label class="span1"   ></label>
             <input class="span2 btn " type="submit" value="Submit Form" > 
             <label class="span4"   ></label>
             <input  class="span2 btn " onClick="<%=viewLogsURL.toString()%>" value="View Logs" />
        </div>
</form>

第一个按钮工作正常,但第二个按钮不会重定向到viewLogsURL。

如果我更换:

<input  class="span2 btn " onClick="<%=viewLogsURL.toString()%>" value="View Logs" />

使用:

<buttonclass="span2 btn " onClick="<%=viewLogsURL.toString()%>" value="View Logs" />

然后按钮也会提交表单url(mainSubmitURL)而不是按钮URL(viewLogsURL)。

如果我使用:

     <aui:button  class="span2 btn " onClick="<%=viewLogsURL.toString()%>" value="View Logs" />

这实际上执行了正确的重定向,但我想避免使用它,因为它会产生一些css样式问题和一些我不会使用的过滤代理问题。 所以我宁愿使用或者如果可能的话(我非常肯定)。

我也试图改变:

<portlet:renderURL var="viewLogsURL">
        <portlet:param name="mvcPath" value="/jsp/logs.jsp"/> 
</portlet:renderURL>

使用:

<portlet:renderURL var="viewLogsURL">
        <portlet:param name="jspPage" value="/jsp/logs.jsp"/> 
</portlet:renderURL>

没机会......

提前谢谢。

1 个答案:

答案 0 :(得分:2)

HTML onclick属性用于在单击元素时执行JavaScript代码。该值必须是有效的JavaScript代码,而不是URL。您可能会误认为<a href='url'>...</a>属性。

这是一个基本的HTML概念 - 有关更多详细信息,请参阅示例w3schools说明。

要使重定向工作,您可以将重定向网址设置为当前位置:

<input class="span2 btn" onClick="location.href = '<%= viewLogsURL.toString() %>'" value="View Logs"/>

或者改为调用JavaScript函数:

<input class="span2 btn" onClick="<portlet:namespace/>doRedirect()" value="View Logs"/>

<script>
    function <portlet:namespace/>doRedirect() {
        location.href = '<%= viewLogsURL.toString() %>';
    }
</script>