使用 Scriptlet 变量调用 EL 函数

Call an EL function with a Scriptlet variable

我似乎遇到了一个奇怪的问题,我无法将 Scriptlet 变量传递给 EL 函数调用。它将全部 运行 正确但它发送一个空值而不是我在 jsp 中设置的值...我觉得我在这里遗漏了一些非常基本的东西。

<!DOCTYPE html>
<html>
<head>


<%@ Sudo / All other tag's required.... %>
<%@ taglib prefix="fn_" uri="/WEB-INF/tags.tld" %>

    <script>
    
<%  LinkedList<MyBean> mb = (LinkedList<MyBean>)request.getAttribute("mBean"); %>
<%  String f="first"; %>
    </script>

</head>

        <td>${fn_:getMyBean(mb,f)}</td>
<?xml version="1.0" encoding="UTF-8"?>
<taglib
    xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee web-jsptaglibrary_2_1.xsd" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    version="2.1">
     
     <tlib-version>1.1.2</tlib-version>
     <uri>http://some.thing/mine</uri>
     
     <function>
     <name>getMyBean</name>
     <function-class>com.glass.MyBean</function-class>
     <function-signature>java.lang.String getMyBean(java.util.List, java.lang.String)</function-signature>
     
     </function>
     
     
</taglib>
package com.glass;

import java.util.LinkedList;
import java.util.List;

public class MyBean{

    
    public static String getMyBean( List<MyBean>cb, String st) {
        return "Hit! "+ st;
    }

输出将给出:

Hit!

而不是return字符串值。当我 运行 调试器时,我可以看到字符串值为空。如果我只是尝试获取字符串值,我还在下面进行了测试:<%=f%> 它确实正确地显示了值。

如何在 EL 函数调用中正确使用字符串值?

设置f的值如下:

<c:set var="f" scope="request" value="first"/> 

然后按如下方式使用:

${fn_:getMyBean(mb,f)}