【问题标题】:StringBuffer going to append path for every method callStringBuffer 将为每个方法调用附加路径
【发布时间】:2012-01-19 16:18:58
【问题描述】:

我通过在 java 文件中使用 StringBuffer 来动态设置 contextPath。在这里,对于每个调用,路径都根据调用次数附加到 StringBuffer 对象。我怎样才能正确运行下面的代码。

StringBuffer blankDeposit = new StringBuffer();
                blankDeposit.setLength(0);
                String rcp = request.getContextPath();
                String create = "Create";
                blankDeposit.append("<a href="+rcp+"/deposit/showBlankDepositSheet.do>"+create+"</a>"+"a blank Deposit Sheet.");

                ActionHelper.formatInfoMessage(
                    mapping,
                    request,blankDeposit.toString());

这里blankDeposit 应该有带有字符串的 contextPath(/myapp)。但我得到一个空白而不是这个。我该怎么做呢。

blankDeposit 按我运行的次数附加字符串。如果我调用五次,那么上面的变量 blankDeposit 包含五倍的附加字符串。

【问题讨论】:

  • setLength 是否设置最大长度?如果你删除那行怎么办?
  • 没有。它将最小长度设置为字符串缓冲区。或清除缓冲区。
  • 首先检查request.getContextPath();是否为空。它也不应该像你说的那样追加五次。检查初始化部分,是否在执行/执行方法下。
  • 没有。我没有得到空值。它正确地将 contextPath 检索为/myapp。但是字符串没有显示在页面中。
  • 添加系统输出以确认您的rcp 是正确的。

标签: java stringbuffer contextpath


【解决方案1】:

这按预期工作。检查上下文路径。如果没问题,请检查 blankDeposit 上的任何其他代码块。

StringBuffer blankDeposit = new StringBuffer();
blankDeposit.setLength(0);
String rcp = "/myapp";
String create = "Create";
blankDeposit.append("<a href="+rcp+"/deposit/showBlankDepositSheet.do>"+create+"</a>"+"a blank Deposit Sheet.");
System.out.println(blankDeposit.toString());

输出:

<a href=/myapp/deposit/showBlankDepositSheet.do>Create</a>a blank Deposit Sheet.

【讨论】:

  • 感谢您的回答。但我希望 contextPath 作为一个动态的。不是静态的。这就是我使用request.getContextPath() 的原因。你的代码是静态的。
  • 我只是举了一个例子,它不需要是静态的。您可以使用 contextPath 本身,它应该可以工作。
  • 好的。感谢您的回答。但我的要求是动态 contextPath。
【解决方案2】:

我得到了答案。这里我将参数传递给函数

ActionHelper.formatInfoMessage(mapping, request,blankDeposit.toString()); 

但我不是那个blankDeposit.toString()

String rcp = request.getContextPath();

然后我将此字符串作为参数发送给 formatInfoMessage 方法。

ActionHelper.formatInfoMessage(mapping,request,"create.a.blank.deposit.sheet",rcp);

将此 rcp 变量设置为 Application.properties 文件。在那里它被设置为

info.create.deposit.sheet=<a href="{0}/deposit/showBlankSheet.do">Create</a> a blank Sheet.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多