我正在尝试编写一个简单的计算器portlet,我将其中一个按钮的值传递给我的portlet时遇到了问题。这是我的.jsp的一部分:
<portlet:actionURL var = "digit" name = "onDigitPressed">
<portlet:param name="jspPage" value = "/html/calc/view.jsp"/>
</portlet:actionURL>
<aui:form action="<%= digit %>" method="post" >
<table>
<tr><td>
<aui:button name="button" type = "submit" value="7" id="7"/>
</td><td>
<aui:button name="button" type = "submit" value="8" id="8" /> </td><td>
<aui:button name="button" type = "submit" value="9" id="9"/> </td><td>
</tr><tr><td>
.
.//more buttons
.
</tr><tr><td>
<aui:button name="button" type = "submit" value="0" id="0" /> </td><td>
<aui:button name="button" type = "submit" value="." id="." /> </td><td>
</td>
</tr>
</table>
</aui:form>
并在onDigitPressed
方法中:
request.getParameter("button");//returns always null
我想以某种方式传递按钮的值,我想只有一个actionURL来处理所有这些按钮。而且只有一个表格也很好。必须有某种方式,但我不知道如何做到这一点,我是portlet和JSP的新手。
修改
我对问题的解释不是很清楚 - 我想传递点击按钮的值。我需要这些信息才能知道用户想要计算什么。当然,我可以使用actionURL
和form
来发送垃圾邮件,但我希望使用一个表单和actionURL执行此操作。我敢打赌它与onClick
属性有关,我很确定我不能使用javascript,因为它必须在服务器端完成,javascript在客户端执行。
答案 0 :(得分:3)
你可以使用java脚本来完成它。
Javascript代码:
var button1 = document.getElementById("button1").value;
var button2 = document.getElementById("button2").value;
document.formName.button1 .value = button1 ;
document.formName.button2.value = button2;
document.formName.submit();
在JSP中:
<aui:button type = "submit" value="1" id="button1"/>
<aui:button type = "submit" value="2" id="button2"/>
<input type="hidden" name="button_1" />
<input type="hidden" name="button_2" />
在Java中:
String button_1= ParamUtil.getString(request, "button_1");
String button_2= ParamUtil.getString(request, "button_2");
答案 1 :(得分:0)
您需要做的是,包含一个输入字段或具有“数字”特定值的portlet:param
节点
您的问题是aui:button
类型为'submit',用作提交表单的按钮,因此所有按钮都会触发相同的actionURL。在aui:form
我可以看到至少3个解决方案:
actionURL
,并使用唯一的“数字”参数。如果你的表单不包含其他参数/输入,并且你的表单是通过像for循环这样的迭代创建的,那么这将是一个不错的主意