Jsp 选择标记不预选值
我的jsp中有Struts2 select标记,如下所示:Jsp 选择标记不预选值,jsp,select,struts2,Jsp,Select,Struts2,我的jsp中有Struts2 select标记,如下所示: <s:iterator value="data.members" status="rowstatus"> <s:select id="Ct%{#rowstatus.index}" name="data.members[%{#rowstatus.index}].extData.carrierKey" headerKey="-1" headerValue="" list="carrier"
<s:iterator value="data.members" status="rowstatus">
<s:select id="Ct%{#rowstatus.index}" name="data.members[%{#rowstatus.index}].extData.carrierKey" headerKey="-1" headerValue="" list="carrier"
onchange="javascript:autoTab(event,this,%{#rowstatus.index},false);">
</s:select>
</s:iterator
现在假设显示了jsp。我在选择标签中选择LIC并提交表单。假设发生了一些验证错误。我调试了应用程序,发现action类中变量“data.members[%{{rowstatus.index}].extData.carrierKey“
的值为1。但是它的值没有在jsp上填充
我不明白,如果
data.members[%{{rowstatus.index}].extData.carrierKey
设置了值,为什么不填充该值。根据我的说法,如果它的值是1,那么select tag必须显示LIC。我尝试了你的代码,对我来说效果很好
JSP:
堆栈溢出
堆栈溢出
功能自动选项卡(ev、电流、nextElementIndex、varBool){
document.getElementById(“stackoverflow”).elements[nextElementIndex].focus();
};
行动:
package com.tutorialspoint.struts2.actions;
import java.util.HashMap;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import com.tutorialspoint.struts2.entities.ObjectData;
import com.tutorialspoint.struts2.entities.ObjectMember;
public class StackOverflowAction extends ActionSupport {
private static final long serialVersionUID = 9053634696133432054L;
private Map<Integer, String> carrier;
private ObjectData data;
public String execute() throws Exception {
return MyAction.SUCCESS;
}
public String save() throws Exception {
return MyAction.SUCCESS;
}
public Map<Integer, String> getCarrier() {
if(this.carrier == null) {
this.carrier = new HashMap<Integer, String>();
this.carrier.put(1,"LIC");
this.carrier.put(2, "Bajaj");
}
return carrier;
}
public ObjectData getData() {
if(this.data == null) {
this.data = new ObjectData();
ObjectMember member1 = new ObjectMember();
member1.getExtData().setCarrierKey("");
ObjectMember member2 = new ObjectMember();
member2.getExtData().setCarrierKey("");
this.data.getMembers().add(member1);
this.data.getMembers().add(member2);
}
return data;
}
}
package com.tutorialspoint.struts2.actions;
导入java.util.HashMap;
导入java.util.Map;
导入com.opensymphony.xwork2.ActionSupport;
导入com.tutorialspoint.struts2.entities.ObjectData;
导入com.tutorialspoint.struts2.entities.ObjectMember;
公共类StackOverflowAction扩展了ActionSupport{
私有静态最终长serialVersionUID=9053634696133432054L;
私人地图载体;
私有对象数据;
公共字符串execute()引发异常{
返回MyAction.SUCCESS;
}
公共字符串save()引发异常{
返回MyAction.SUCCESS;
}
公共地图getCarrier(){
如果(this.carrier==null){
this.carrier=新的HashMap();
本.承运人.put(1,“LIC”);
本.carrier.put(2,“Bajaj”);
}
返回载体;
}
public ObjectData getData(){
if(this.data==null){
this.data=新的ObjectData();
ObjectMember member1=新的ObjectMember();
member1.getExtData().setCarrierKey(“”);
ObjectMember member2=新的ObjectMember();
member2.getExtData().setCarrierKey(“”);
this.data.getMembers().add(member1);
this.data.getMembers().add(member2);
}
返回数据;
}
}
struts.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="stackoverflow" extends="struts-default" namespace="/">
<action name="stackoverflow" class="com.tutorialspoint.struts2.actions.StackOverflowAction" method="execute">
<result name="success">/jsp/stackoverflow/test.jsp</result>
</action>
</package>
</struts>
/jsp/stackoverflow/test.jsp
迭代器标记不是必需的,因此您可以尝试不使用它。另外,不清楚预选值是什么意思。通过name=“data.members[%{rowstatus.index}].extData.carrierKey“
,您试图实现什么?…extData.carrierKey
是要默认选择的值吗?抱歉。javascript上有一些东西在将值填充到标记之前清除了该值。谢谢大家的努力。
package com.tutorialspoint.struts2.actions;
import java.util.HashMap;
import java.util.Map;
import com.opensymphony.xwork2.ActionSupport;
import com.tutorialspoint.struts2.entities.ObjectData;
import com.tutorialspoint.struts2.entities.ObjectMember;
public class StackOverflowAction extends ActionSupport {
private static final long serialVersionUID = 9053634696133432054L;
private Map<Integer, String> carrier;
private ObjectData data;
public String execute() throws Exception {
return MyAction.SUCCESS;
}
public String save() throws Exception {
return MyAction.SUCCESS;
}
public Map<Integer, String> getCarrier() {
if(this.carrier == null) {
this.carrier = new HashMap<Integer, String>();
this.carrier.put(1,"LIC");
this.carrier.put(2, "Bajaj");
}
return carrier;
}
public ObjectData getData() {
if(this.data == null) {
this.data = new ObjectData();
ObjectMember member1 = new ObjectMember();
member1.getExtData().setCarrierKey("");
ObjectMember member2 = new ObjectMember();
member2.getExtData().setCarrierKey("");
this.data.getMembers().add(member1);
this.data.getMembers().add(member2);
}
return data;
}
}
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="stackoverflow" extends="struts-default" namespace="/">
<action name="stackoverflow" class="com.tutorialspoint.struts2.actions.StackOverflowAction" method="execute">
<result name="success">/jsp/stackoverflow/test.jsp</result>
</action>
</package>
</struts>