标签: struts2

使用 OGNL 在 Struts 2 中创建带有 2 个操作参数的动态 URL

如果我有一个 url:www.myurl.com/books并希望能够<s:url>对作者和年份创建新的过滤:www.myurl.com/books/Sartre/1942通过将Sartre1942作为参数传递给操作类,该操作类将呈现具有适当结果的书籍页面。在Struts2中如何做到这一点?

我已经准备好了后端逻辑,所以如果:

  1. 我可以重用永久链接使用的相同 jsp 和操作类 www.myurl.com/books
  2. www.myurl.com/books/Sartre/1942 即使在 get 请求加载页面后,也会在地址栏中显示动态呈现的 URL (即www.myurl.com/books,不是 )。

java url jsp struts2 ognl

1
推荐指数
1
解决办法
3361
查看次数

令牌/令牌会话拦截器导致 HttpSession 上的空指针

我正在研究 struts2 Web 应用程序,我正在使用令牌拦截器处理 CSRF 漏洞。

我所做的是成功和错误,我会将用户重定向到同一页面,但会出现操作错误或成功消息。

<action name="saveApplicationForm" class="action.ApplicationFormAction" 
      method="saveApplicationForm">
        <interceptor-ref name="token" />
        <result name="invalid.token" type="tiles">applicationForm.tiles</result>    
        <result name="input" type="tiles">applicationForm.tiles</result>
</action>
Run Code Online (Sandbox Code Playgroud)

没有令牌/令牌会话拦截器一切正常,但是当我使用拦截器时,我收到了 NullPointerException。

堆栈跟踪

java.lang.NullPointerException: null
at action.ApplicationFormAction.saveApplicationForm(ApplicationFormAction.java:218) ~[ApplicationFormAction.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_67]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_67]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_67]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_67]
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252) [xwork-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.handleValidToken(TokenInterceptor.java:193) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.handleToken(TokenInterceptor.java:154) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.interceptor.TokenInterceptor.doIntercept(TokenInterceptor.java:142) [struts2-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) [xwork-core-2.3.16.3.jar:2.3.16.3]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246) [xwork-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:562) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) [struts2-core-2.3.16.3.jar:2.3.16.3]
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99) [struts2-core-2.3.16.3.jar:2.3.16.3] …
Run Code Online (Sandbox Code Playgroud)

java struts2 csrf-protection interceptorstack struts2-interceptors

1
推荐指数
1
解决办法
921
查看次数

Struts - struts-taglib.jar未找到

我是新来的Struts.我Struts2从它的网站上下载了.现在我想struts-html.tld在我的一个文件中引用JSP文件.

但是当我struts-taglib.jar在下载的struts中查找文件时,我没有找到它.

struts2 taglib

0
推荐指数
1
解决办法
5170
查看次数

了解Struts中的Getter()和Setter()

如何在struts中调用getter()和setter()方法?

java struts2

0
推荐指数
1
解决办法
5995
查看次数

在struts2中验证失败时重新填充控件

我是这个框架的新手.在我的页面中,我有一个下拉列表和一个文本框.如果出现任何错误,则不再提供丢弃.如何解决这个问题.

struts.xml中:

 <action name="*DropDown"
            class="com.mmm.ehspreg2.web.action.DropdownListAction" method="{1}" />

<action name="addComment" method="add"
            class="com.mmm.ehspreg2.web.action.product.CommentAction">
            <result name="input" type="tiles">addComment</result>
            <result name="error" type="tiles">addComment</result>
            <result name="success" type="tiles">reloadList</result>
        </action>
Run Code Online (Sandbox Code Playgroud)

页:

<s:form action="addComment" method="POST">
    <s:action name="getDivisionsDropDown" id="actFetchDivisions" executeResult="true"></s:action>
    <s:action name="getPropretyTypesDropDown" id="actFetchPropretyTypes" executeResult="true" ></s:action>

<table cellspacing="0" cellpadding="3" width="100%" border="0">
                <tr>
                    <td class="error"><s:actionerror /><s:actionmessage /> <s:fielderror></s:fielderror></td>
                </tr>
                <tr>
                    <td class="bdyRecords"><s:label>
                        <s:text name="common.division" />
                    </s:label></td>
                    <td class="bdyRecords" style="width: 1px">:</td>
                    <td class="bdyRecords"><s:if
                        test="#actFetchDivisions.lstEntities.size()>0">
                        <s:select cssClass="drop" list="#actFetchDivisions.lstEntities"
                            cssStyle="width:200px" tooltip="divisionName"
                            id="select_division" listKey="id" name="comment.divisionId"
                            listValue="value"></s:select>
                    </s:if></td>
                </tr>
                <tr>
                    <td class="bdyRecords"><s:label>
                        <s:text name="common.propertytype" />
                    </s:label></td>
                    <td class="bdyRecords" …
Run Code Online (Sandbox Code Playgroud)

struts2

0
推荐指数
1
解决办法
1806
查看次数

struts 2密码预设值

我想在struts 2密码标签中设置预设值,任何人都可以告诉我提前谢谢

struts2

0
推荐指数
1
解决办法
1290
查看次数

Struts2中的ValueStack如何工作?

请考虑以下代码.

public class SampleAction {
  private  String[] sampleArray1 = new String[]{"item1","item2","item3"};
  private  String[] sampleArray2 = new String[]{"a","b","c"};
  private List lst = new ArrayList();
  lst.add(1)
  lst.add(2)
  //Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

当我们尝试在JSP中访问它时,上面的哪些属性将在值栈中?它是否像普通堆栈一样工作,即继续推送它读取的任何属性?

struts2 valuestack

0
推荐指数
1
解决办法
4118
查看次数

访问Struts2中的Map键值

我在数据库中有一个变量映射,我想在网页上显示详细信息,前端是struts2.我试过这个

 <html:iterator value="fields" id="field">
    <html:textfield name="#field.value" key="#field.value" label="#field.key"/> 
</html:iterator>
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,我怎么能轻松获得密钥名称,所以我可以有这样的代码

想法是显示如下

Name: [  ]
Random: [  ]
Something: [   ] 
Run Code Online (Sandbox Code Playgroud)

作为表单中的文本字段...

我怎么能这么做呢?

java forms struts2

0
推荐指数
1
解决办法
1万
查看次数

如何使用多个Struts 2配置文件?

可以为同一个模块创建多个struts配置文件吗?

我试图为不同的应用程序/模块创建配置文件,并将其包含struts.xml在Struts 2的主文件中,但有人能告诉我如何为同一个应用程序创建多个配置文件吗?

java struts2

0
推荐指数
1
解决办法
3338
查看次数

WebLogic服务器记录Broken Pipe

突然之间,我们在weblogic Server中看到了这个错误日志.

 ERROR | org.apache.struts2.components.UIBean [486] | error when rendering
java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
    at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
    at weblogic.servlet.internal.ChunkOutput.writeChunkTransfer(ChunkOutput.java:577)
    at weblogic.servlet.internal.ChunkOutput.writeChunks(ChunkOutput.java:548)
    at weblogic.servlet.internal.ChunkOutput.flush(ChunkOutput.java:436)
    at weblogic.servlet.internal.CharsetChunkOutput.flush(CharsetChunkOutput.java:298)
    at weblogic.servlet.internal.ChunkOutput$2.checkForFlush(ChunkOutput.java:657)
    at weblogic.servlet.internal.CharsetChunkOutput.write(CharsetChunkOutput.java:200)
    at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:148)
    at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:151)
    at weblogic.servlet.internal.WLOutputStreamWriter.writeBytes(WLOutputStreamWriter.java:166)
    at weblogic.servlet.internal.WLOutputStreamWriter.flushBuffer(WLOutputStreamWriter.java:210)
    at weblogic.servlet.internal.WLOutputStreamWriter.write(WLOutputStreamWriter.java:130)
    at weblogic.servlet.internal.WLOutputStreamWriter.write(WLOutputStreamWriter.java:99)
    at weblogic.servlet.internal.DelegateChunkWriter.write(DelegateChunkWriter.java:113)
    at weblogic.servlet.internal.ChunkOutputWrapper.write(ChunkOutputWrapper.java:124)
    at weblogic.servlet.jsp.JspWriterImpl.write(JspWriterImpl.java:246)
    at org.apache.struts2.views.freemarker.tags.CallbackWriter.write(CallbackWriter.java:67)
    at java.io.Writer.write(Writer.java:192)
    at java.io.Writer.write(Writer.java:157)
    at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
    at freemarker.core.Environment.visit(Environment.java:196)
    at freemarker.core.MixedContent.accept(MixedContent.java:92)
    at freemarker.core.Environment.visit(Environment.java:196)
    at freemarker.core.Environment.visit(Environment.java:233)
    at freemarker.core.UnifiedCall.accept(UnifiedCall.java:116)
    at freemarker.core.Environment.visit(Environment.java:196)
    at freemarker.core.MixedContent.accept(MixedContent.java:92)
    at freemarker.core.Environment.visit(Environment.java:196)
    at freemarker.core.Environment.process(Environment.java:176)
    at freemarker.template.Template.process(Template.java:232)
    at org.apache.struts2.components.template.FreemarkerTemplateEngine.renderTemplate(FreemarkerTemplateEngine.java:168) …
Run Code Online (Sandbox Code Playgroud)

java weblogic struts2

0
推荐指数
1
解决办法
1万
查看次数