我正在构建一个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>
没机会......
提前谢谢。答案 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>