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

redirect to renderURL in a MVCPortlet not working

我正在构建 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 样式问题和一些过滤代理问题,而我没有使用 or 。 所以我宁愿使用 or 如果可能的话(我很确定它是)。

我也试过改:

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

没有机会...

提前致谢。

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

这是一个基本的 HTML 概念 - 请参见示例 w3schools 描述以了解更多详细信息。

要使重定向生效,您可以将重定向 URL 设置为当前位置:

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