问题一:之前遇到过input标签中使用disabled这个属性导致传参失败的问题,由于当时没有总结,致使现在又弄了老半天才发现。
<div class="formtitle"><span>修改问题选项</span></div>
<form action="${path }/msgController/msgItemsModify" method="post">
<input type="hidden" name="stage" value="${specifiedQuestion.stage }">
<ul class="forminfo">
<li><label>stage</label><input name="stage" value="${specifiedQuestion.stage }" type="text" class="dfinput" disabled="disabled"/></li>
<li><label>no</label><input name="id" value="${specifiedQuestion.id }" type="text" class="dfinput" disabled="disabled"/></li>
<li><label>items</label>
<textarea name="content" class="textinput">${specifiedQuestion.content }</textarea>
......
</ul>
</form>
在后台,我们获取通过input标签中的name属性获得该文本域的value值:
@RequestMapping("/msgModifyUi")
public String msgModifyUi(String stage,Model model){
System.out.println("msgModifyUi,stage:"+stage);
当我们如第一段代码中,使用了disabled的属性,导致我们的stage没有值。所以我们加了一个没有disabled的属性的隐藏域来进行传参。
问题二:
表单中使用get方式提交会导致后台接收的中文数据出现乱码,即使在web.xml中配置了编码过滤器:
<!-- 编码过滤器,解决中文乱码 -->
<filter>
<filter-name>SpringEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SpringEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
所以,我们的form表单应该尽量使用post方式提交或者你在后台对中文数据进行编码处理。
问题三:
今天在发布项目之后,访问时浏览器访问一直在转圈,出不来页面。原因是因为我在使用shiro进行验证时,在spring的配置文件中:
<property name="filterChainDefinitions">
<value>
.........
<!-- authc需要认证(登陆)才能使用 -->
/** = authc
</value>
</property>
配置了/**对所有的方法都需要认证,所以才会出现这类现象。
解决办法:可以这样写:/*.action*,表示对以action结尾的方法才进行认证。