gpt4 book ai didi

java - 访问 JSP Java scriptlet 中的 Controller 方法而不是使用标签?

转载 作者:行者123 更新时间:2023-12-01 09:06:12 25 4
gpt4 key购买 nike

我的struts配置:

<action name="myAction" class="my.controller.MyAction">
<result name="myPage">/myPage.jsp</result>

MyAction 有一个方法 public String getSomeValue() { ... }

myPage.jsp 中,我可以轻松将该值打印到 HTML 流:

<s:property value="someValue" />

但是,我想将其打印到控制台:

<%

//how do I reference myActionBean
String someVal = myActionBean.getSomeValue();
System.out.println(someVal);

%>

我的问题是,如何在 JSP 代码块中引用操作 Controller (替换上面代码中的 myActionBean),就像 s:property 标记一样在其语法中消除了方法的“get”部分?我想在 JSP 中使用 Java 访问 myActionBean.getSomeValue() 而不是在标签中进行访问。我知道这不是推荐的做法,但这只是为了调试。

最佳答案

根据@DaveNewton的建议,我能够从上下文访问操作类:

<%
ActionContext context = ActionContext.getContext();

//this will access actionClass.getFoo() just like the tag
//<s:property value="%{foo}"/> does but outputs to HTML
Object fooObj = context.getValueStack().findValue("foo");
String fooStr = (String)fooObj;

//so that we can print it to the console
//because the tag can only output to HTML
//and printing to the console is the objective of the question
System.out.println("foo = " + fooStr);
%>

我必须在 JSP 之上导入 ActionContext:

<%@ page import="com.opensymphony.xwork2.ActionContext" %>

我知道有些人不喜欢我应该这样做,但这实际上正是我想做的。我很清楚我可以在 getFoo() 本身中执行 System.out,但我想在 JSP 中执行它。

关于java - 访问 JSP Java scriptlet 中的 Controller 方法而不是使用标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41267851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com