检索字段时出错,javascript 缩小器错误

error in retrieving field, javascript minifier error

我知道这个问题现在可能有很多重复问题,但我在处理我的 liferay 项目时遇到了这个问题...

我通过这样做将检索到的数据库字段放在我的 jsp 中,

<portlet:resourceURL  var="imageResourceURL1">
<portlet:param name="image" value="nbi"/>
</portlet:resourceURL>

<script type="text/javascript">
    function checkUploads(){
        <% 
            Blob nbi=null, omb=null, san=null, cs=null, birthCert=null, affid=null, waiver=null;
            try{

                attachments a = attachmentsLocalServiceUtil.getAttachmentsByUserId();

                nbi = a.getNbi_clearance();
                omb = a.getOmbudsman_clearance();
                san = a.getSandiganbayan_clearance();
                cs = a.getCivil_service_clearance();
                birthCert = a.getBirthcertificate();
                affid = a.getAffidavit_of_no_relation();
                waiver = a.getAuth_waiver();

                out.println(nbi);
                out.println(omb);
                out.println(san);
                out.println(cs);
                out.println(birthCert);
                out.println(affid);
                out.println(waiver);

            }catch(Exception e){
                out.println(e);
            }
        %>

        /* check nbi */  
        if(nbi == null || nbi == ""){
            $(".nbiUpload").empty().append(
            '<input type="file" accept="image/*" name="<portlet:namespace />nbiFile" id="nbi" style="display:none" />'
            +'<input type="text" id="nbiFilename" />'
            +'<button type="submit" id="nbiBrowse" onclick="$("#nbi").click()">Browse</button>'
            +'<button type="button" id="nbiUpload" name="<portlet:namespace />nbisubmit">Upload</button>'
            +'<script type="text/javascript">'
                +'$("#nbi").change(function(e) {'
                    +'$("#nbiFilename").val(this.files[0].name);'
                +'});'
                +'$("#nbiUpload").click(function(event){'
                    +'event.preventDefault();'
                +'});'
                +'$("#nbiBrowse").click(function(event){'
                    +'event.preventDefault();'
                +'});'
            +'< /script>');
        }else{
            $(".nbiUpload").empty().append(
            '<a id="nbiclearance" href='<%=imageResourceURL1.toString()%>' rel="lightbox" style="cursor:pointer">'
            +'<img src='<%=imageResourceURL1.toString()%>' alt="no Image" id="img_nbi_clearance" style="height:100px;width:130px;cursor:pointer;" border="0"></a>');
        }
    }
</script>

我无法理解的是错误,我收到诸如此类的错误,

18:28:13,916 ERROR [http-bio-8080-exec-160][MinifierUtil:111] 3: 38: missing ; before statement
18:28:13,917 ERROR [http-bio-8080-exec-160][MinifierUtil:111] 7: 33: missing ; before statement
18:28:13,918 ERROR [http-bio-8080-exec-160][MinifierUtil:111] 24: 10: syntax error
18:28:13,918 ERROR [http-bio-8080-exec-160][MinifierUtil:111] 26: 39: missing ) after argument list

也许我只是语法错误,所以请帮助我..:)

我想你错过了在脚本的其他部分添加“+”..

if(nbi == null || nbi == ""){
    $(".nbiUpload").empty().append(
    '<input type="file" accept="image/*" name="<portlet:namespace />nbiFile" id="nbi" style="display:none" />'
    +'<input type="text" id="nbiFilename" />'
    +'<button type="submit" id="nbiBrowse" onclick="$("#nbi").click()">Browse</button>'
    +'<button type="button" id="nbiUpload" name="<portlet:namespace />nbisubmit">Upload</button>'
    +'<script type="text/javascript">'
        +'$("#nbi").change(function(e) {'
            +'$("#nbiFilename").val(this.files[0].name);'
        +'});'
        +'$("#nbiUpload").click(function(event){'
            +'event.preventDefault();'
        +'});'
        +'$("#nbiBrowse").click(function(event){'
            +'event.preventDefault();'
        +'});'
    +'< /script>');
}
else
{
    $(".nbiUpload").empty().append(
    '<a id="nbiclearance" href=' + '<%=imageResourceURL1.toString()%>' + ' rel="lightbox" style="cursor:pointer">'
    +'<img src=' + '<%=imageResourceURL1.toString()%>' + ' alt="no Image" id="img_nbi_clearance" style="height:100px;width:130px;cursor:pointer;" border="0"></a>');
}

没有给出问题的确切位置(这很难,因为人们只能阅读一些生成输出的代码),这是我希望您自己调试的方式:您的问题似乎与Minifier - 这是删除多余空格和换行符并假定您的脚本代码有效的组件。解决这个问题的一个好方法是暂时删除 <script> 标签。替换为(script)(/script),打开页面,搜索这个临时内容,minifier不会碰它。但现在您可以看到 HTML 文档中呈现的内容。

典型问题是:您应该考虑转义输出的各种值:数据库中的文件名或其他数据可能包含空格、引号或其他特殊字符,这些字符会干扰您的输出并在意想不到的地方终止字符串。

另一个选项是:将 ?strip=0 添加到 URL - 这应该会禁用 Liferay 的 JS 缩小器。你仍然会有无效的 JS 代码,但现在浏览器的开发者工具可以直接将你指向有问题的地方。