我无法搞清楚这个(虽然我知道它并不复杂)。
我在jsp页面上有5个下拉列表。每个下拉列表的onChange事件都会调用相同的操作。 在动作文件中,我想知道5个下拉中的哪一个被更改(导致onChange事件)。
我知道这可能很简单,但我无法做到。请指教。
这是包含下拉列表的jsp:
<s:form action="viewDayReport" id="dayReport">
<s:select label="Customer " name="customer" headerKey="0" headerValue="Select" list="customerList" onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
<s:select label="Contact " name="contact" headerKey="0" headerValue="Select" list="contactList" onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
<s:select label="Employee " name="employee" headerKey="0" headerValue="Select" list="employeeList" onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
<s:select label="Stage " name="stage" headerKey="0" headerValue="Select" list="stageList" onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
<s:select label="Type " name="type" headerKey="0" headerValue="Select" list="typeList" onchange="dojo.event.topic.publish('getLists');dojo.event.topic.publish('getDayReports');"/>
<sd:datetimepicker label="Date" name="date" displayFormat="dd/MM/yyyy"/>
<%--<s:reset value="Reset"/>--%>
<%--<s:submit value="View Report(s)"/>--%>
</s:form>
如果我错过了任何信息,请告诉我们。
由于
Kanishk
编辑:
这是包含5个下拉列表的当前表单
<s:form action="viewDayReport" id="dayReport">
<s:select label="Customer " name="customer" headerKey="0" headerValue="Select" list="customerList" onchange="dojo.event.topic.publish('getLists');dojo.query('which').attr('value','customer');"/>
<s:select label="Contact " name="contact" headerKey="0" headerValue="Select" list="contactList" onchange="dojo.event.topic.publish('getLists');"/>
<s:select label="Employee " name="employee" headerKey="0" headerValue="Select" list="employeeList" onchange="dojo.event.topic.publish('getLists');"/>
<s:select label="Stage " name="stage" headerKey="0" headerValue="Select" list="stageList" onchange="dojo.event.topic.publish('getLists');"/>
<s:select label="Type " name="type" headerKey="0" headerValue="Select" list="typeList" onchange="dojo.event.topic.publish('getLists');"/>
<sd:datetimepicker label="Date" name="date" displayFormat="dd/MM/yyyy"/>
<s:hidden id="which"/>
<%--<s:reset value="Reset"/>--%>
<%--<s:submit value="View Report(s)"/>--%>
</s:form>
在动作文件中(我正在缩短代码并显示相关内容):
public class getLists extends ActionSupport {
private String which;
public String getWhich() {
return which;
}
public void setWhich(String which) {
this.which = which;
}
private String customer;
public String getCustomer() {
return customer;
}
public void setCustomer(String customer) {
this.customer = customer;
}
//other variables and functions
@Override
public String execute(){
System.out.println("getlists:"+which);
System.out.println("getlists:"+customer);
//other function calls
return "success";
}
}
变量客户被打印得很好但变量没有。
在主题处理中,我所做的就是称为动作。这是代码:
<s:url id="scriptURL" action="getLists" />
<sd:div href="%{scriptURL}" listenTopics="getLists" formId="dayReport" showLoadingText="false" preload="false"></sd:div>
同样适用于第二个主题。
在您所说的内容中,您能解释一下以下代码的作用:
dojo.query('#which').attr('value', s);
我将如何在行动档案中获取“价值”?
答案 0 :(得分:2)
如果没有主题处理代码,则很难说,但有两种可能的解决方案:
1)保持会话中每个字段的值并进行比较以查看更改的内容
2)在“包装器”onchange
函数中设置隐藏字段(见下文)
<s:select name="customer" ... onchange="fire('customer')">
...
function fire(s) {
$('#which').val(s);
dojo.event.topic.publish('getLists');
dojo.event.topic.publish('getDayReports');
}