Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “内有非法文本”;c:选择;标签:"'; $(“#医学”)。附加(“” +''+medtype[medCurrentIndex]+'' +''+medicineName[medCurrentIndex]+'' +''+频率[medCurrentIndex]+'' +''+剂量[medCurrentIndex]+'' +''+数量[medCurrentIndex]+'' +''+天数[medCurrentIndex]+'' +'' +'' +“编辑” +“删除” +'' +'' +'' +'' +'' +'');_Java_Javascript_Jsp_Jstl - Fatal编程技术网

Java “内有非法文本”;c:选择;标签:"'; $(“#医学”)。附加(“” +''+medtype[medCurrentIndex]+'' +''+medicineName[medCurrentIndex]+'' +''+频率[medCurrentIndex]+'' +''+剂量[medCurrentIndex]+'' +''+数量[medCurrentIndex]+'' +''+天数[medCurrentIndex]+'' +'' +'' +“编辑” +“删除” +'' +'' +'' +'' +'' +'');

Java “内有非法文本”;c:选择;标签:"'; $(“#医学”)。附加(“” +''+medtype[medCurrentIndex]+'' +''+medicineName[medCurrentIndex]+'' +''+频率[medCurrentIndex]+'' +''+剂量[medCurrentIndex]+'' +''+数量[medCurrentIndex]+'' +''+天数[medCurrentIndex]+'' +'' +'' +“编辑” +“删除” +'' +'' +'' +'' +'' +'');,java,javascript,jsp,jstl,Java,Javascript,Jsp,Jstl,用JSP的javaScript编写此代码合法吗? 因为它给了我以下的错误: org.apache.jasper.jaspereException:TagLibraryValidator for c在/WEB-INF/views/prescriptionTemporary.jsp中的验证错误消息79:c:choose“tag:”中的非法文本 JSP中的任何Java代码都将在呈现时进行评估。这意味着,服务器将读取JSP代码,并开始替换任何scriptlet或自定义标记(如JSTL)以获得必要的Jav

用JSP的javaScript编写此代码合法吗? 因为它给了我以下的错误:

org.apache.jasper.jaspereException:TagLibraryValidator for c在/WEB-INF/views/prescriptionTemporary.jsp中的验证错误消息79:c:choose“tag:”中的非法文本


JSP中的任何Java代码都将在呈现时进行评估。这意味着,服务器将读取JSP代码,并开始替换任何scriptlet或自定义标记(如JSTL)以获得必要的Java代码。这可以通过以下示例轻松解释:


var x='${x}';
或以JSTL形式:


var x=“”;
假设
x
是一个值为“Hello World”的请求属性,这将以HTML格式生成此输出:


var x=‘你好,世界’;
在您的情况下,它将尝试将这部分代码转换为JSTL格式:

'
+''

简而言之,您不应该尝试从JavaScript中附加任何类型的Java代码(scriptlet、表达式语言、自定义标记,如JSTL等)。

用JavaScript编写JSTL标记是行不通的。JQuery的
.append(…)
方法将在解析JSTL标记很久之后在客户端启动

如果您的目标是通过jstl选择要追加的内容,则需要进行重大重写


编辑:

试试这个:

$("#medicine").append('<tr class="hide1 newRow"   id="row'+medCurrentIndex+'">'
                +'<td>'+medtype[medCurrentIndex]+'</td>'
                +'<td>'+medicineName[medCurrentIndex]+'</td>'
                +'<td>'+frequency[medCurrentIndex]+'</td>'
                +'<td>'+dose[medCurrentIndex]+'</td>'
                +'<td>'+quantity[medCurrentIndex]+'</td>'
                +'<td>'+numberofDays[medCurrentIndex]+'</td>'
                +'<c:choose>'
                +'<c:when test="${role eq 'doctor' }">'
                +'<td><button class="btn" type="button" name="edit" value="Edit" onclick="editMedRow('+medCurrentIndex+');">Edit</button></td>'
                +'<td><button class="btn"  type="button" name="delete" value="Delete" onclick="deleteMedRow('+medCurrentIndex+');">Delete</button></td>'
                +'</c:when>'
                +'<c:otherwise>'
                +'<td><input type="text" id="cost" /></td>'
                +'</c:otherwise>'
                +'</c:choose>'
                +'</tr>');
$(“#医学”)。附加(“”
+''+medtype[medCurrentIndex]+''
+''+medicineName[medCurrentIndex]+''
+''+频率[medCurrentIndex]+''
+''+剂量[medCurrentIndex]+''
+''+数量[medCurrentIndex]+''
+''+天数[medCurrentIndex]+''
+“编辑”
+“删除”
+''
+'');

我想强调的是,尽管上面的代码片段可能有用,我不推荐它。更好的解决方案是转储
${role}
转换为全局变量或隐藏输入,并从JS端进行决策。或者在jstl中设置整个追加字符串。混合使用这两个字符串会使读取变得非常困难。

当我使用而不是它时,它工作正常,但当我尝试使用它时抛出异常。y?正如Luiggi指出的,jstl解析器会在cho之间发现非法字符ose和when。即两个单引号和一个加号。Ya尝试了这个方法,但一段时间有效,另一段时间无效。对于这个问题的替代解决方案是什么?@user2696142首先你必须理解答案中的解释。然后你会想出一个解决方案。一种可能是将JSTL逻辑移到JavaScript端,然后选择什么通过模拟
标记中的逻辑来追加或不追加。
$("#medicine").append('<tr class="hide1 newRow"   id="row'+medCurrentIndex+'">'
   +'<td>'+medtype[medCurrentIndex]+'</td>'
   +'<td>'+medicineName[medCurrentIndex]+'</td>'
   +'<td>'+frequency[medCurrentIndex]+'</td>'
   +'<td>'+dose[medCurrentIndex]+'</td>'
   +'<td>'+quantity[medCurrentIndex]+'</td>'
   +'<td>'+numberofDays[medCurrentIndex]+'</td>'
       <c:choose>
       <c:when test="${role eq 'doctor' }">
           +'<td><button class="btn" type="button" name="edit" value="Edit" onclick="editMedRow('+medCurrentIndex+');">Edit</button></td>'
           +'<td><button class="btn"  type="button" name="delete" value="Delete" onclick="deleteMedRow('+medCurrentIndex+');">Delete</button></td>'
       </c:when>
       <c:otherwise>
           +'<td><input type="text" id="cost" /></td>'
       </c:otherwise>
       </c:choose>
   +'</tr>');