这是我的代码:
<html:text name="rptData" property="emailAddress" onblur="checkIfEmpty('<bean:write name="rptData" property="status" />' , this.id)" />
这嵌套在 logic:iterate 标记内。我需要做的是将'status'的值传递给javascript checkIfEmpty 方法。但我猜引号中有一些错误。它工作不正常。请有人指导我。感谢。
答案 0 :(得分:1)
你不能嵌套这样的自定义标签,句号,不幸的是大多数答案都暗示你可以,因为这代表了对JSP的一个基本误解。
理想情况下,您不会使用<logic:iterate>
标记,因为当您使用JSTL时不建议使用它:当JSTL和Struts 1标记功能重叠时,请使用JSTL选项。然后使用标准JSP EL访问变量。
<c:forEach items="listOfThings" var="current">
...
<html:text ... onblur="checkIfEmpty('${rptData.status}', ${current.id})" ...
...
在这个例子中,我还假设this
应该引用<c:forEach>
标签中定义的当前迭代对象。
答案 1 :(得分:1)
在做了一些研究之后我发现了答案。
如果我有这样的代码:
<html:text styleId="emailAddress+<%=statusC.toString() %>" name="rptData" property="emailAddress" />
其输出如下:
<input type="text" name="emailAddress" value="abc@gmail.com" id="emailAddress+<%=statusC.toString() %>" />
但如果我使用
<html:text styleId="<%=statusC.toString() %>" name="rptData" property="emailAddress" />
输出是:
<input type="text" name="emailAddress" value="abc@gmail.com" id="Approved" />
这意味着没有字符串连接,输出是正确的。即仅使用
styleId="<%=statusC.toString() %>"
而不是
styleId="emailAddress + <%=statusC.toString() %>"
甚至
styleId="emailAddress" + <%=statusC.toString() %> - This results in an error, though
yeilds正确的输出。
因此,解决方法是首先在scriplet中初始化一个完整的java String,然后在styleId标记内使用它。
<% String emailId = "emailAddress" + statusC.toString() ;%>
<html:text styleId="<%=emailId%>" name="rptData" property="newEmailAddress" />
它会正常工作。干杯!
答案 2 :(得分:0)
你可能想尝试在双引号内使用双引号时添加一些转义字符,就像你的情况一样,它会是这样的:
onblur="checkIfEmpty('<bean:write name=\"rptData\" property=\"status\" />' , this.id)"
答案 3 :(得分:0)
试试这个:
<html:text name="rptData" property="emailAddress" onblur="checkIfEmpty('<bean:write name=\'rptData\' property=\'status\' />' , this.id)" />