Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 选择标记不预选值_Jsp_Select_Struts2 - Fatal编程技术网

Jsp 选择标记不预选值

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"

我的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"
              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>