struts2实例化ActionSupport不能getText的问题

r00_a2lBUR 2020-08-26 10:39:51
我在代码中,ActionSupport support = new ActionSupport(); 实例化了一个ActionSupport,用它来getText抛出异常,不能正确的获取到国际化文字,但又没有办法传一个ActionSupport过来,请教大伙,这个要怎么做?
...全文
6388 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
r00_a2lBUR 2020-10-26
  • 打赏
  • 举报
回复
引用 6 楼 vcshcn 的回复:
public class MessageUtils {


public static String get(String text) {
ValueStack stack = ActionContext.getContext().getValueStack();
return TextProviderHelper.getText(text, text, null, stack, false);
}

public static String get(String text, String defaultMessage) {
ValueStack stack = ActionContext.getContext().getValueStack();
return TextProviderHelper.getText(text, defaultMessage, null, stack, false);
}

public static String get(String text, List<Object> arguments) {
ValueStack stack = ActionContext.getContext().getValueStack();
return TextProviderHelper.getText(text, text, arguments, stack);
}

// load custom resource file
private static HashMap<String, ResourceBundle> boundles = new HashMap<>();

public static String get(String resource, String text, Locale locale) {
ResourceBundle boundle = boundles.get(resource);
if (boundle == null) {
boundle = ResourceBundle.getBundle("resources/"+resource, locale );
boundles.put(resource, boundle);
}
return boundle.getString(text);
}
}
你太厉害了,这个都有思路,找个时间来试一下
vcshcn 2020-10-24
  • 打赏
  • 举报
回复
public class MessageUtils {


public static String get(String text) {
ValueStack stack = ActionContext.getContext().getValueStack();
return TextProviderHelper.getText(text, text, null, stack, false);
}

public static String get(String text, String defaultMessage) {
ValueStack stack = ActionContext.getContext().getValueStack();
return TextProviderHelper.getText(text, defaultMessage, null, stack, false);
}

public static String get(String text, List<Object> arguments) {
ValueStack stack = ActionContext.getContext().getValueStack();
return TextProviderHelper.getText(text, text, arguments, stack);
}

// load custom resource file
private static HashMap<String, ResourceBundle> boundles = new HashMap<>();

public static String get(String resource, String text, Locale locale) {
ResourceBundle boundle = boundles.get(resource);
if (boundle == null) {
boundle = ResourceBundle.getBundle("resources/"+resource, locale );
boundles.put(resource, boundle);
}
return boundle.getString(text);
}
}
r00_a2lBUR 2020-10-12
  • 打赏
  • 举报
回复
引用 3 楼 vcshcn 的回复:
getText一般是从上下文调用的,不会new出来的
是这样,但我在用HtmlUnit测试里面,模拟访问,想用new一个的方法来getText,但就是抛出异常
vcshcn 2020-10-11
  • 打赏
  • 举报
回复
我印象里记得是 class DemoAction extends ActionSupport { 然后调用 getText }
vcshcn 2020-10-11
  • 打赏
  • 举报
回复
getText一般是从上下文调用的,不会new出来的
r00_a2lBUR 2020-09-15
  • 打赏
  • 举报
回复
这个问题有没有什么比较简便的解决方法?
r00_a2lBUR 2020-08-26
  • 打赏
  • 举报
回复
抛出的异常:
java.lang.NullPointerException
at com.opensymphony.xwork2.ActionSupport.getLocale(ActionSupport.java:64)
at com.opensymphony.xwork2.TextProviderSupport.getLocale(TextProviderSupport.java:329)
at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:204)
at com.opensymphony.xwork2.TextProviderSupport.getText(TextProviderSupport.java:119)
at com.opensymphony.xwork2.ActionSupport.getText(ActionSupport.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:873)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1539)
at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:96)
at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:88)
at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1615)
at ognl.ASTMethod.getValueBody(ASTMethod.java:91)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at ognl.SimpleNode.getValue(SimpleNode.java:258)
at ognl.Ognl.getValue(Ognl.java:467)
at ognl.Ognl.getValue(Ognl.java:431)
at com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:351)
at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecuteMethod(OgnlUtil.java:403)
at com.opensymphony.xwork2.ognl.OgnlUtil.callMethod(OgnlUtil.java:349)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:436)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:253)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:177)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:260)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:73)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:139)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:133)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:133)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:192)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:69)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:88)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:246)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:99)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:139)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:155)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:174)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:120)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:171)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:195)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:246)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:247)
at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564)
at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:81)
at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:143)
at com.narwhal.ow.filters.CustomStrutsFilter.doFilter(CustomStrutsFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.narwhal.ow.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.narwhal.ow.filters.NoCacheFilter.doFilter(NoCacheFilter.java:40)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.narwhal.ow.filters.XssFilter.doFilter(XssFilter.java:38)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506)
at java
内容概要:本文围绕“Ollama本地模型部署与调优实践在软件行业的应用”展开,系统介绍了如何利用Ollama框架在本地部署大语言模型,并将其应用于提升研发效能的具体场景。文章重点讲解了Ollama的核心优势——轻量级、低显存占用、支持模型量化和自定义配置,适用于智能代码补全、遗留系统重构和私有知识库问答等典型软件工程任务。通过一个完整的Python脚本案例,详细展示了如何结合Git差异分析与Ollama API构建自动化代码审查助手,并深入剖析了提示词工程、温度参数调节、上下文窗口扩展、本地API调用等关键技术点,强调了数据安全性、输出确定性和系统集成的工程考量。最后展望了本地模型在未来软件研发全链条中的广泛应用前景。; 适合人群:具备一定编程基础,熟悉Python和Git操作,从事软件开发、DevOps或AI工程化的研发人员,尤其是关注代码质量与研发效率提升的技术负责人。; 使用场景及目标:①在企业内网构建安全可控的AI代码辅助系统;②优化本地大模型在代码生成、审查、重构等任务中的输出质量与稳定性;③将Ollama集成至CI/CD流程实现自动化代码检查;④掌握提示词设计、参数调优与上下文管理等实战技能; 阅读建议:此资源侧重于实际工程落地,建议读者在本地环境中部署Ollama并运行文中示例代码,结合自身项目场景调整提示词与超参数,深入理解本地模型在软件研发中的调优逻辑与安全架构设计。

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧