我是Java EE和Struts2的新手.我需要知道我是否做错了.
我有这样的链接:http:// localhost:8080/myProject/deleteUser?idUser = 42
我想要的只是获取idUser值.
这是我用来获取动作类中的参数值的方法:
HttpServletRequest request = (HttpServletRequest) ActionContext.getContext()
.get(ServletActionContext.HTTP_REQUEST);
System.out.println(request.getParameter("idUser"));
Run Code Online (Sandbox Code Playgroud) 我想格式化<s:property value="summary.total"/>Struts 2中标记显示的数字.有一个double值.我怎样才能做到这一点?我应该用OGNL吗?
或者也许我必须使用<s:text/>标签并在资源文件中定义我的格式?
我有我需要共享某些网络资源(的要求jsp,html,js,images,css在不同等)的Spring基于Struts 2应用程序.并且似乎OSGi可以用来实现这一目标?
OSGi吗?OSGi足够成熟,可以用于生产应用程序?提前致谢!
编辑: 我经历了这篇文章,看起来人们可以跨Web应用程序共享一个Web包.唯一的区别是他们用Spring MVC做到了.我想知道是否可以用Struts2应用程序实现这一点?
编辑2:我基本上不清楚以下内容:
我使用Struts2,我的应用程序有数千个由Spring管理的动作类.之前我使用过Spring 2.5.6,我的应用程序很快启动.但是当我把Spring改成3.0时.我的Tomcat启动速度非常慢.对于每个动作类,我从Spring获得以下调试消息:
DEBUG (Cglib2AopProxy.java:802) - Unable to apply any optimisations to advised method: public java.util.List
Run Code Online (Sandbox Code Playgroud)
几乎每个动作类的每个方法都打印了上面的消息.这就是为什么应用程序花了这么多时间来启动的原因.
下面是我的spring xml的快照,供您参考.
<aop:config proxy-target-class="true"/> <!-- No matter true of false, the problem remains -->
<context:component-scan base-package="com.mycom" scoped-proxy="targetClass"/>
Run Code Online (Sandbox Code Playgroud)
让我附加Spring的完整调试消息,显示创建bean的进度:
2010-01-19 17:07:32,786 [main] DEBUG (DefaultSingletonBeanRegistry.java:214) - Creating shared instance of singleton bean 'CL04001Action'
2010-01-19 17:07:32,786 [main] DEBUG (AbstractAutowireCapableBeanFactory.java:424) - Creating instance of bean 'CL04001Action'
2010-01-19 17:07:32,787 [main] DEBUG (AbstractAutowireCapableBeanFactory.java:498) - Eagerly caching bean 'CL04001Action' to allow for resolving potential circular references
2010-01-19 17:07:32,787 [main] DEBUG (Cglib2AopProxy.java:150) …Run Code Online (Sandbox Code Playgroud) 作为探索/学习Struts2,JSP和Servlets的一部分,我从这里和那里看到可以使用servlet和servlet-mapping web.xml.但是,Struts2也提到过滤器和过滤器映射web.xml.
两者有什么区别?这些是互相排斥的吗?我何时应该使用哪个以及为什么?有人可以澄清这些概念吗?谢谢.
澄清
我只是理解我需要了解Struts2和Servlets是如何相关的:http://www.coderanch.com/t/57899/Struts/Difference-between-servlet-struts
我有一个使用Struts2,JSP,JPA,Spring和MySql开发的Web应用程序.我想将此应用程序移至Amazon Cloud.我之前没有完成云部署或知道如何做.任何人都可以帮我逐步完成一个过程或一个程序或一个指导我这样做的文件.谢谢你的帮助.
我正在使用Struts和Struts JSON插件开发Spring应用程序.当我运行应用程序时,它会出现以下错误(在Firebug中):
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: java.lang.IllegalAccessException: Class org.apache.struts2.json.JSONWriter can not access a member of class org.springframework.aop.TruePointcut with modifiers public
Run Code Online (Sandbox Code Playgroud)
这是完整的堆栈跟踪:
org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException:
java.lang.IllegalAccessException: Class
org.apache.struts2.json.JSONWriter can not access a member of class
org.springframework.aop.TruePointcut with modifiers "public"
org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:238)
org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:171)
org.apache.struts2.json.JSONWriter.process(JSONWriter.java:161)
org.apache.struts2.json.JSONWriter.value(JSONWriter.java:127)
org.apache.struts2.json.JSONWriter.write(JSONWriter.java:95)
org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:196)
org.apache.struts2.json.JSONResult.execute(JSONResult.java:170)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) …Run Code Online (Sandbox Code Playgroud) 我需要运行我的Java应用程序cPanel.我已经成功安装了Tomcat,
我可以通过将war文件复制到我的www文件夹来运行我的应用程序,但问题是它war在地址中显示了项目名称(文件名),我需要知道如何删除它,以便用户可以访问www.example.com而不是www.example.com/MyProject/index.jsp?
如何避免以下错误?我正在Struts2上实现Spring-Security,应用程序运行完美,但以下消息将显示在服务器日志中.
WARNING!!!
FilterDispatcher <<< is deprecated! Please use the new filters!
This can be a source of unpredictable problems!
Please refer to the docs for more details!
http://struts.apache.org/2.x/docs/webxml.html
Run Code Online (Sandbox Code Playgroud) 在jsp页面中,我<s:optiontransferselect>在左侧和右侧之间有一个交换值和一个保存的提交按钮.
<s:optiontransferselect
allowUpDownOnLeft="false"
allowUpDownOnRight="false"
allowSelectAll="false"
allowAddAllToLeft="false"
allowAddAllToRight="false"
addToRightLabel="Go to right"
addToLeftLabel="Go to left"
leftTitle="Left side values"
headerKey="0"
name="option"
list= "optionList"
rightTitle="Right side values"
doubleHeaderKey="0"
doubleList="selectedOptionList"
doubleName="selectOption"
doubleId="selectedValues"
>
</s:optiontransferselect>
<s:submit />
Run Code Online (Sandbox Code Playgroud)
我运行程序,它实际上可以从右侧保存值.但是它没有显示保存的值.
我正在考虑使用javascript并使用onchange事件<s:optiontransferselect>来实现这一目标
<script>
function show(){
var list = document.getElementById("selectedValues");
for (var i = 0; i < list.options.length; i++) {
//seems something not correct in this part but I am not sure how solve in this way
list.options[i].selected = true;
}
return true;
} …Run Code Online (Sandbox Code Playgroud)