我在我的网络应用程序的JSP文件中有以下代码行
<% if (!maintenance) { %>
<customTag:DialogEntry entry="<%=new com.presentation.generic.session.DialogEntry("dialog1","225px","true","true",new String[]{"authentification.Login.action.logInApplicationLabel"},new String[]{"logInApplication()"}) %>"/>
<% } else { %>
<customTag:DialogEntry entry="<%=new com.presentation.generic.session.DialogEntry("dialog1","225px","true","true",new String[]{},new String[]{}) %>"/>
<% } %>
我得到的错误信息是:
/WEB-INF/tags/DialogEntry.tag根据TLD,值 属性不接受表达式
如何解决此问题?
DialogEntry.tag:
<%@ attribute name="entry" rtexprvalue="true" type="com.presentation.generic.session.DialogEntry" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://struts.apache.org/tags-html-el" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean-el" prefix="bean" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://struts.apache.org/tags-logic-el" prefix="logic" %>
<script type="text/javascript">
//confirm("<c:out value="${entry.id}" /> début");
var <c:out value="${entry.id}" /> = new YAHOO.widget.Dialog("<c:out value="${entry.id}" />",
{
width: "<c:out value="${entry.size}" />",
<c:if test="${\"\" != entry.visible}">
visible:true,
</c:if>
<c:if test="${\"\" == entry.visible}">
visible:false,
</c:if>
close:false,
draggable :false
<c:if test="${\"\" != entry.effect}">
,effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.5}
} );
</c:if>
<c:if test="${\"\" == entry.effect}">
} );
</c:if>
<c:if test="${\"false\" != entry.hasButtons}">
var myButtons = [
<c:forEach var="button" items="${entry.buttons}" varStatus="ind">
{ text:"<bean:message key="${button}"/>", handler:function() {<c:out value="${entry.functions[ind.index]}" />;}, isDefault:true }
<c:if test="${!empty entry.buttons[ind.index+1]}">
,
</c:if>
</c:forEach>
];
<c:out value="${entry.id}" />.cfg.queueProperty("buttons", myButtons);
</c:if>
// confirm("<c:out value="${entry.id}" /> fin - debut script");
if($.browser.msie && $('#header').size() > 0 ){
// confirm("<c:out value="${entry.id}" /> fin - debut script IE");
var menuWidth = $("div#menu").get(0).clientWidth;
var headerHeight = $("div#header").get(0).clientHeight;
var width = document.body.clientWidth;
var contentWidthConnected = width - menuWidth;
if( $('div#content_onglets').size() > 0){
// confirm("<c:out value="${entry.id}" /> fin - debut script IE Onglet");
<c:out value="${entry.id}" />.cfg.queueProperty("x", 50);
<c:out value="${entry.id}" />.cfg.queueProperty("y", 0);
}
else{
// confirm("<c:out value="${entry.id}" /> fin - debut script IE Pas Onglet");
<c:out value="${entry.id}" />.cfg.queueProperty("x", menuWidth + 50);
<c:out value="${entry.id}" />.cfg.queueProperty("y", headerHeight );
}
// confirm("<c:out value="${entry.id}" /> fin - FIN script IE");
}
else{
<c:out value="${entry.id}" />.cfg.queueProperty("fixedcenter", true);
}
// confirm("<c:out value="${entry.id}" /> fin script");
<c:out value="${entry.id}" />.render();
// confirm("<c:out value="${entry.id}" /> fin script 2");
</script>
答案 0 :(得分:2)
要么逃避你的内心引号:
<% if (!maintenance) { %>
<customTag:DialogEntry entry="<%=new com.presentation.generic.session.DialogEntry(\"dialog1\",\"225px\",\"true\",\"true\",new String[]{\"authentification.Login.action.logInApplicationLabel\"},new String[]{\"logInApplication()\"}) %>"/>
<% } else { %>
<customTag:DialogEntry entry="<%=new com.presentation.generic.session.DialogEntry(\"dialog1\",\"225px\",\"true\",\"true\",new String[]{},new String[]{}) %>"/>
<% } %>
或使用单引号:
<% if (!maintenance) { %>
<customTag:DialogEntry entry='<%=new com.presentation.generic.session.DialogEntry("dialog1","225px","true","true",new String[]{"authentification.Login.action.logInApplicationLabel"},new String[]{"logInApplication()"}) %>'/>
<% } else { %>
<customTag:DialogEntry entry='<%=new com.presentation.generic.session.DialogEntry("dialog1","225px","true","true",new String[]{},new String[]{}) %>'/>
<% } %>
阅读错误消息is quoted with " which must be escaped when used within the value
您发现文本中包含"
是原因。因此,您的文字未定义为"
(第二个解决方案,您使用'
)或文本中的"
有一个\
来逃避它们并制作它们是文本中的实际字符。
答案 1 :(得分:1)
逃避所有&#34;用\&#34;你的街区内:
entry=""