JSP会话问题
JSP session problem
我是一个写jsp的新手。
在我的JSP中,我动态地创建了一个带有选择框的表单(即这些字段不在html中)在其中一个选择框中,我实现了一个onchange方法,该方法将值作为参数传递并重新显示表单。当表单重新显示我传递的参数时,使用外部XML文件根据参数的值设置另一个选择框的值。
一个问题是,在重新加载当前页面的onchange方法之后,其他字段(大约10个字段)的选定值会丢失。
目前我使用下面的方法使用会话来解决这个问题在我的JSP;在onchange方法中,我使用javascript加载选定的值,并在GET请求中将它们作为参数传递给servlet。在servlet中,我在会话中接收参数并设置属性。
在JSP中,我在会话中使用getAttributes,并在动态创建表单期间更改所选值。
我想知道是否有一种更简单的方法来做到这一点,因为我必须创建很多字段才能工作。在这个例子中,我也没有使用数据库。
由于动态创建字段是使用java逻辑,是真的,ajax不能使用吗?
你能对我设计的质量提出建议吗?我是否忠实于MVC设计模式?如果我没弄错的话,你的整个问题基本上可以归结为(轻描淡写)如下:
我有一个有一堆下拉列表的表单。我在提交一个下拉菜单的变化期间的形式。提交后如何保留所有其他下拉框的选定值?
是吗?
OK,只要下拉选项的值与提交的请求参数值匹配,就设置selected
属性。下面的示例假设您有一个Map<String, String>
作为${fooOptions}
:
<select name="foo">
<c:forEach items="${fooOptions}" var="fooOption">
<option value="${fooOption.key}" ${fooOption.key == param.foo ? 'selected' : ''}>${fooOption.value}</option>
</c:forEach>
</select>
你看到了吗?当表单被提交时,当前选择的名称为"foo"
的下拉菜单选项作为请求参数发送,并且在服务器端作为请求参数${param.foo}
可用。在动态生成选项时,只需检查选项的值是否等于请求参数值,如果是,则只需设置selected
属性。
请注意,这与会话等无关。它们服务于不同的目的,通常与当前访问者本人有关,例如其登录,偏好,购物车等。不要用它来存储表单值。只有当你在同一会话中打开多个浏览器窗口/选项卡时,它才会发生冲突。
JavaScript只有在你想做ajax魔术的时候才有用。但我想这对你来说只是另一个陡峭的学习曲线。也许以后再说。无论如何,您都可以在这个回答中找到一些入门示例:如何使用servlet和Ajax?
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Web2Py 中的 ajax 和会话变量的问题
- 有关应用程序中的 Cookie 和会话 ASP.net 问题
- 在QuickBlox中传递扩展数据和会话请求时出现问题
- 在JavaScript中获取第二个会话变量时出现问题
- 我在使用Facebook开放图发布操作时遇到问题,因为会话已过期.我该如何解决这个问题
- JS更改django中的会话时出现问题
- 会话超时问题
- Express 3的交叉会话问题
- 会话超时有问题
- PHP会话问题,不是100%的工作时间
- 通过JavaScript赋值给Asp.net标签,然后通过c#会话对象传递时的问题
- JSP会话问题
- 保持用户会话存活问题
- RangeError:无效状态码:0在快速应用程序会话问题
- 在会话存储中保存和显示键和值对时出现问题
- AJAX登录-会话问题
- 我有一个问题与远程服务器的会话变量
- Ajax添加记录与会话id和用户id问题