【发布时间】:2018-04-30 17:44:56
【问题描述】:
在 jsp 页面中,我有一个 <s:optiontransferselect> 用于在左侧和右侧之间交换值和一个提交按钮来保存。
<s:optiontransferselect
allowUpDownOnLeft="false"
allowUpDownOnRight="false"
allowSelectAll="false"
allowAddAllToLeft="false"
allowAddAllToRight="false"
addToRightLabel="Go to right"
addToLeftLabel="Go to left"
leftTitle="Left side values"
headerKey="0"
name="option"
list= "optionList"
rightTitle="Right side values"
doubleHeaderKey="0"
doubleList="selectedOptionList"
doubleName="selectOption"
doubleId="selectedValues"
>
</s:optiontransferselect>
<s:submit />
我运行程序,它实际上可以保存右侧的值。但是它不会在那里显示保存的值。
我正在考虑使用 javascript 并在 <s:optiontransferselect> 中使用 onchange 事件来实现此目的
<script>
function show(){
const list = document.getElementById("selectedValues");
for (var i = 0; i < list.options.length; i++) {
//seems something not correct in this part but I am not sure how solve in this way
list.options[i].selected = true;
}
return true;
}
</script>
<s:optiontransferselect
allowUpDownOnLeft="false"
allowUpDownOnRight="false"
allowSelectAll="false"
allowAddAllToLeft="false"
allowAddAllToRight="false"
addToRightLabel="Go to right"
addToLeftLabel="Go to left"
leftTitle="Left side values"
headerKey="0"
name="option"
list= "optionList"
rightTitle="Right side values"
doubleHeaderKey="0"
doubleList="selectedOptionList"
doubleName="selectOption"
doubleId="selectedValues"
onchange ="show()" <!-- onchange seems not work here -->
>
</s:optiontransferselect>
当我运行程序时,右侧仍然无法显示保存的值。
有关 optiontransferselect 的更多信息,以防它有用。
我有一个动作类。
public class OptionTransferSelectAction extends ActionSupport {
private List<String> optionList;
private List<String> selectedOptionList;
//private String option;
private List<String> option;
private List<String> selectOption;
public OptionTransferSelectAction (){
optionList=new ArrayList<String>();
//display on the left side for selection
optionList.add("Section A");
optionList.add("Section B");
optionList.add("Section C");
optionList.add("Section D");
optionList.add("Section E");
optionList.add("Section F");
optionList.add("Section G");
optionList.add("Section H");
selectedOptionList=new ArrayList<String>();
//display on the right side
//pretend it does not have any values in the first time (does not
//trigger the save yet)
}
public List<String> getOptionList() {
return optionList;
}
public void setOptionList(List<String> optionList) {
this.optionList = optionList;
}
public List<String> getSelectedOptionList() {
return selectedOptionList;
}
public void setSelectedOptionList(List<String> selectedOptionList) {
this.selectedOptionList = selectedOptionList;
}
/*
public String getOption() {
return option;
}
public void setOption(String option) {
this.option = option;
}
*/
public List<String> getOption() {
return option;
}
public void setOption(List<String> option) {
this.option = option;
}
public List<String> getSelectOption() {
return selectOption;
}
public void setSelectOption(List<String> selectOption) {
this.selectOption = selectOption;
}
}
更新
我使用正确的 getter 和 setter 将选项从 String 更改为 List<String>。我运行代码,optiontransferselect 仍然无法显示保存的值。
我做错了哪一部分?有人可以告诉我吗?谢谢。
更新 例如,我创建了一个新的 jsp,success.jsp。如果我选择了一些值来选择选项并单击提交按钮。 jsp文件可以显示我刚刚提交的值。我可以看到数据库中保存的值。但是 optiontransferselect 仍然无法显示保存的值。
success.jsp 有一段代码可以显示我刚刚提交的值。
Selected Value(s) : <s:property value="selectOption"/>
在数据库中,我可以看到保存的值,所以我想知道如何让optiontransferselect显示保存的值?
另一个更新
我尝试使用按钮调用 javascript 函数在提交前显示selectedValues。
<script>
function testshow() {
var value = document.getElementById("selectedValues");
for(var i=0;i<value.options.length; i++) {
alert(value.options[i].innerHTML);
}
return true;
}
</script>
//button to call the function
<s:submit onclick="return testshow()"/>
我运行程序,当我点击按钮时,它可以在提交之前显示选择的值,所以我仍然不明白为什么optiontransferselect无法获取保存的选择值。
【问题讨论】:
-
一个是字符串,第二个是列表。?
-
@AleksandrM,两者都是
ArrayList<String>() -
@AleksandrM,我更新了内容,我想表达我对
optiontransferselecthere 的想法。不过我之前没用过,如果我的想法不正确或者无法实现,请告诉我,谢谢, -
@AleksandrM,
optionList=new ArrayList<String>();是左侧optiontransferselect,它包含供用户选择并移动到右侧的值。selectedOptionList=new ArrayList<String>();是右边的optiontransferselect,如果用户从optionList 移动,它会显示在这里,并且可以将值传递给optionList。我的意思是值可以在左侧和右侧之间交换。提交按钮将保存右侧框的值,我尝试让框在打开 jsp 页面时显示保存的值 -
据我了解您的问题,问题仅在显示的页面上?在这种情况下,您能否提供呈现的 HTML/javascript(仅相关部分)
标签: javascript java jquery jsp struts2