使用Struts 1.3
我有一个带有用户名、密码的登录表单,还有一个带有一些值的下拉列表,比如English、Deutsh等等。提交表单时,需要从下拉列表中保留最后一个值。
遵循代码示例。
public class LoginForm extends ActionForm {
private String locale;
public void setLocale(String locale) {
this.locale = locale;
}
public String getLocale() {
return locale;
}
}
JSP代码:
<html:select property="locale" onchange="refreshPage(this.value)">
<%
Locale availableLanguages[] = DAOFactory.getConfigurationDAO().getAvailableLanguages();
for (int i=0; i<availableLanguages.length; i++) {
String localeNameKey = "com.web.gui.localeName." + availableLanguages[i].toString();
%>
<html:option value="<%= availableLanguages[i].toString() %>"
key="<%= localeNameKey %>"/>
<%
}
%>
</html:select>
现在,此JSP代码生成以下下拉列表:
struts配置。xml
<action-mappings>
<action path="/login" type="com.web.gui.LoginAction" name="loginForm" scope="request" input="/loginForm.jsp">
<forward name="setLanguage" path="/loginForm.jsp"/>
</action>
</action-mappings>
问题:
现在的问题是,当我输入无效的用户名、密码并选择德语时。最后选择的语言应保持不变,并显示在下拉列表中。但下拉列表已初始化,值设置为English。
提交表单时,字段将被验证。如果它们无效,则会显示错误消息,并且所有值都初始化为null。现在,在我的例子中,我想存储下拉列表中选择的值,并希望在验证后显示该值(对于无效用户)。
修改代码:
豆子课
public class LoginForm extends ActionForm{
private Collection dropDownList = null;
public void setDropDownList(Collection dropDownList){
this.dropDownList = dropDownList;
}
public Collection getDropDownList(){
if(dropDownList == null){
dropDownList = new Vector(10);
Locale availableLanguages[] = DAOFactory.getConfigurationDAO().getAvailableLanguages();
Properties properties = loadProperties(Locale.ENGLISH);
for(int i=0 ; i<availableLanguages.length ; i++){
String localeNameKey = "com.web.gui.localeName." + availableLanguages[i].toString();
String value = availableLanguages[i].toString();
String key = properties.getProperty(localeNameKey);
dropDownList.add(new LabelValueBean(key,value));
}
}
return dropDownList;
}
}
在jsp中:
<html:select property="locale" onchange="refreshPage(this.value)">
<html:optionsCollection property="dropDownList"/>
</html:select>
可以
首先,不要使用Scriptlet标签,这是一种糟糕的做法。
因为您使用的是Struts1。x
struts支持使用标签库选择标签。
下面是使用dorpdown的示例代码片段。
<html:select property="langType">
<html:optionsCollection property="dropDownList" value="key"
label="value" />
</html:select>
在表单类中创建memeber元素“langType”类型List
或Map
。在表单中使用setter设置列表或映射到该langType
。
即使重定向到同一页面,它也会在您之前选择的下拉列表中为您保留该值。但是每次你想展示的时候都需要设置下拉列表。
检查这个问题,回答他们已经解释了如何在Stuts1中使用列表作为下拉列表。x使用列表作为下拉列表
在哪里设置DropDownList
不要使用scriptlet标记在JSP中设置dropdownlist。
第一步
在你进入登录页面之前(假设它应该点击一个动作类),在这个动作类中设置你的下拉列表。
在进入登录页面之前(假设它不会点击action类),请保留另一层Jsp或重定向操作,它会点击action类,所以在action类中设置下拉列表。
问题内容: 我对学习Node and Express并不陌生,但我仍在尝试用express围绕代码流。假设我们在session.js中有如下代码: 假设用户是必需的mongo模式。我发现奇怪的是session.user分配: 由于req变量在重定向后将超出范围,但是我们显然是在执行此操作以保留用户数据,因此我需要弄清楚以下哪种情况描述了正在发生的情况。(A)被分配给req参数的参数(在调用回调时)
Hibernate 认为持久化类(persistent class)新实例化的对象是瞬时(Transient)的。我们可通过将瞬时(Transient)对象与 session 关联而把它变为持久的(Persistent)。 DomesticCat fritz = new DomesticCat(); fritz.setColor(Color.GINGER); fritz.setSex('M');
我有一个显示sql连接列表的页面。该表中的一个字段是databaseType,它在枚举中定义: 为了创建和编辑对象,我在选择框中填充以下内容: 填充该表单的DTO对象是: 问题是所有字符串字段都是持久化的,而不是复杂类型的字段。 列出所有创建对象的表定义为: 渲染出来的是: 在开始使用Thymeleaf之前,我使用的是JSP,表定义非常相似,我得到了databaseType值,没有任何问题。 切换
我需要一些帮助。是为了我的学校项目。仅供参考,我使用过的一些符号: 我已经包括了我的代码要点,希望足以查看!
我有一个程序,其类类似于下面的基本示例: 我希望能够做的是写一个 对象。我想,我必须要么构造实际的对象来显示它们。 谢谢你!
问题内容: 如何将数组值加载到这样的格式中,以便每当打开窗体时,它就会显示表的先前值?我不想将表单连接到任何数据库。 到目前为止,这是我的代码,它允许我在文本字段中输入文本,当我单击“创建客户”按钮时,它将值存储到中。但是,如果我退出并重新打开表单,表中以前的数据将消失。我已经做过一些研究,但似乎将netbeans 连接到数据库是保存和检索数据的唯一方法。但是,我相信也可以将数据存储到数组中,但是