S2SH关于actionMessages,jq在load时无法清除的问题

0)BaseAction写了套message处理方法:

	/**
	 * 设定页面显示提示的信息
	 * 
	 * @param msg
	 */
	@SuppressWarnings("unchecked")
	public void setMessage(String msg) {
		Collection<String> messages = this.getActionMessages();
		if (messages != null) {
			messages.clear();
			messages.add(msg);
			this.setActionMessages(messages);
		}
	}

	/**
	 * 清空所有页面的异常信息和校验错误信息
	 */
	public void clearMessages() {
		this.clearErrorsAndMessages();
		this.fieldErrorsList = null;
	}



1)footer.jsp组装了action层弹出提示信息标签
		<!-- 弹出提示信息 -->
		<s:if test="hasActionMessages()">
			<s:iterator value="actionMessages">
				<div id="dialog_message">
					<p style="font-size: 110%">
						<img src="images/form/btn_info16.png" />
						&nbsp;
						<s:property escape="false" />
					</p>
				</div>
				
			</s:iterator>

			<s:if test="!clearErrorsAndMessages()">
				<s:set name="actionMessages" value=""></s:set>
			</s:if>		
		</s:if>



2)jQuery写了组基于dialog实现弹出信息带css样式的脚本:
	/**
	 * 定义确认信息对话框
	 */
	var dialog_message_option = {
		modal : true,
		autoOpen : true,
		width : 280
	};
	$.extend(true, dialog_message_option, {
		title : "提示信息",
		buttons : [ {
			text : "确定",
			click : function() {
				$(this).dialog("close");
				// 手动清空!
				//$("#dialog_message").empty();
			}
		} ]
	});

	if (isNotEmpty($("#dialog_message").html())) {
		$("#dialog_message").dialog(dialog_message_option);
	}


3)问题来了,如果用jquery.layout-latest.js组装页面布局,每次load主表单jsp时,提示信息按上面的方式总是消除不了,可如果正常jsp加载不用load局部加载,正常好使。
试了各种action拦截器清空msg也好、action方法前清空也好,都不行,最后只好加了一句js来控制(上面被注释的那句),点击信息对话框确定按钮时触发:
// 手动清空!
//$("#dialog_message").empty();

4)jsp页面打开debug查看,每次actionMessages对象都是[],看来是load后js的block块在作祟?还是session级别设定有关?或是dom对象所致?
		<s:if test="%{true}">
			<div style="text-align: left; float: left; width: 100%">
				<s:debug></s:debug>
			</div>
		</s:if>

你可能感兴趣的:(java,jquery,s2sh)