gpt4 book ai didi

java - 上传到服务器后只有一个getter在页面上工作

转载 作者:行者123 更新时间:2023-11-30 11:20:09 25 4
gpt4 key购买 nike

我有一个使用 Struts2 框架的网站。它在我的本地计算机上工作正常,但是当我将它上传到远程服务器(托管)时,一些 getter 和 setter 变得不调用。例如:

Action :ForecastAction.java

JSP:预测.jsp

这是forecast.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
...
<span><s:property value="day" /></span>
<span><s:property value="month" /></span>
<span class="week_day"><s:property value="weekday" /></span>
...

这是ForecastAction.java

public class ForecastAction extends ActionSupport {

private String day, month, weekday;
... (other variables)

public String getDay() {
System.out.println("Ask for day");
return day;
}

public void setDay(String day) {
this.day = day;
}

public String getMonth() {
System.out.println("Ask for month");
return month;
}

public void setMonth(String month) {
this.month = month;
}

public String getWeekday() {
return weekday;
}

public void setWeekday(String weekday) {
this.weekday = weekday;
}
... (other setters and getters)
public String execute(){
... (calculcating parameters)
return SUCCESS;
}
}

在我的本地计算机上,我可以看到所有值(日、月和工作日),但远程服务器仅返回 jsp 日值。在我看来,这些属性没有什么区别,只是struts shows only day。我检查过,该操作(在远程服务器上)计算了所有值,因此变量不为空。问题是 getter 不是由 struts 调用的。

在我的应用程序的其他操作中观察到同样的问题:setter setPassword() 不起作用,但 setLogin() 在授权操作中工作正常。 (它只有两个二传手)。

更新:

当我像这样在 jsp 中更改日期和月份时:

<span><s:property value="%{#day}"/></span>
<span><s:property value="%{#month}"/></span>

我开始正确地看到工作日。看起来,struts 只显示了他喜欢的第一个属性:) 仅此而已。

JSP Debug:
Struts has detected an unhandled exception:
1.permission can't be null

2.actionErrors

3.Caught an exception while getting the property values of Weather.Action.Public.ForecastAction@749f6da7

4.An exception occurred processing JSP page /forecast.jsp at line 3 1: <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2: <%@ taglib prefix="s" uri="/struts-tags" %> 3: 4: 5: 6: Stacktrace:

Stacktraces

org.apache.jasper.JasperException: An exception occurred processing JSP page /forecast.jsp at line 3 1: <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2: <%@ taglib prefix="s" uri="/struts-tags" %> 3: 4: 5: 6: Stacktrace:
1)Caught an exception while getting the property values of Weather.Action.Public.ForecastAction@30aa119a - Class: ognl.ObjectPropertyAccessor File: ObjectPropertyAccessor.java Method: getPossibleProperty Line: 69 - ognl/ObjectPropertyAccessor.java:69:-1
2)actionErrors - Class: ognl.ObjectPropertyAccessor File: ObjectPropertyAccessor.java Method: getPossibleProperty Line: 69 - ognl/ObjectPropertyAccessor.java:69:-1
3)ognl.OgnlException: actionErrors [java.lang.NullPointerException: permission can't be null]
4)java.lang.NullPointerException: permission can't be null

/UDP

你能帮帮我吗,有什么问题吗?

也许需要下一个文件:

这是我的struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.devMode" value="true" />
<constant name="struts.multipart.maxSize" value="30000000" />

<package name="public" namespace="/" extends="struts-default">
... (other actions)
<action name="forecast" class="Weather.Action.Public.ForecastAction" method="execute">
<result name="success">/forecast.jsp</result>
<result name="error">/Error.jsp</result>
</action>
... (other actions)
</package>
...(other package)
</struts>

和 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Weather</display-name>
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter- class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
<servlet-name>StartTimerServlet</servlet-name>
<display-name>StartTimerServlet</display-name>
<servlet-class>Weather.Service.StartTimerServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>

</web-app>

最佳答案

可能是struts 2.3.1.1的bug。和 OGNL 3.0.3 以及启用 java 安全性时的一些应用程序服务器

请看

https://issues.apache.org/jira/browse/OGNL-176

https://issues.apache.org/jira/browse/WW-3746

我建议你把struts升级到最新版本

关于java - 上传到服务器后只有一个getter在页面上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22880555/

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