0

我正在尝试编写一个简单的计算器 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 的新手。

编辑

我对问题的解释不是很清楚 - 我想传递单击按钮的值。我需要这些信息来知道用户想要计算什么。当然,我可以只使用actionURLs 和forms 发送垃圾邮件,但我想用一个表单和 actionURL 来做这件事。我敢打赌它与onClick属性有关,我很确定我不能使用 javascript,因为它必须在服务器端完成,而 javascript 是在客户端执行的。

4

2 回答 2

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");
于 2013-07-03T11:23:56.003 回答
0

您需要做的是包含一个输入字段或portlet:param节点,该字段或节点将具有“数字”特定值

您的问题是aui:button“提交”类型的“提交”旨在用作提交表单的按钮,因此您的所有按钮都会触发相同的 actionURL。在名为“action”的属性中声明的那个aui:form

我可以看到至少 3 个解决方案:

  1. 为每个按钮使用另一种形式。这将允许您actionURL使用唯一的“数字”参数为每个按钮设置不同的值。如果您的表单没有其他参数/​​输入,并且如果您的表单是通过诸如 for 循环之类的迭代创建的,这将是一个好主意
  2. 使用一个表单和一个提交按钮,并包含另一个 ui 组件,如下拉菜单,它将提供“数字”值
  3. 有一个隐藏的输入文本,它将保留“数字”值。然后让你的每个按钮触发一个 javascript 函数,该函数将更新“数字值”
于 2013-07-03T12:03:24.710 回答