我正在尝试使用Tomcat 5作为我的容器将SiteMesh集成到遗留应用程序中.我有一个main.jsp我正在用一个简单的装饰器装饰.
在decorators.xml,我刚刚定义了一个装饰器:
<decorators defaultdir="/decorators">
<decorator name="layout-main" page="layout-main.jsp">
<pattern>/jsp/main.jsp</pattern>
</decorator>
</decorators>
Run Code Online (Sandbox Code Playgroud)
如果我手动去,这个装饰工作http://example.com/my-webapp/jsp/main.jsp.但是,有一些地方的servlet,而不是重定向到jsp,执行转发:
getServletContext().getRequestDispatcher("/jsp/main.jsp").forward(request, response);
Run Code Online (Sandbox Code Playgroud)
这意味着URL保留在类似于http://example.com/my-webapp/servlet/MyServletjsp文件的东西上,因此没有被装饰,我认为因为它与模式不匹配decorators.xml.
我不能做,<pattern>/*</pattern>因为还有其他jsps不需要装饰layout-main.jsp.我不能做一个<pattern>/servlet/MyServlet*</pattern>因为有时MyServlet可能转发main.jsp,也许error.jsp在其他时间转发.
有没有办法解决这个问题,而无需对servlet如何工作进行广泛的更改?由于它是一个遗留的应用程序,我没有那么多的自由来改变事物,所以我希望有一些配置方面可以解决这个问题.
SiteMesh的文档真的不是很好.我一直在为分发附带的示例应用程序工作.我真的很喜欢SiteMesh,我希望能在这种情况下让它工作.
我目前面临一个难题:将两个javascript对象连接在一起的正确方法是什么?
想象一下像文本编辑器这样的应用程序,它有几个不同的文件.我有一些HTML页面代表笔记本的视图.我有一个文件notebook.js,其中包含NotebookController和Notebook View的类定义.
NotebookControler对象负责在笔记本上执行业务逻辑,如"保存笔记本","加载笔记本","新笔记本".NotebookView负责管理用于演示的HTML.它做低级别的东西,如"获取/设置笔记本电脑主体""获取/设置笔记本名称".它还侦听DOM事件(onClick)并触发业务事件(saveNotebook).这是我对被动视图模式的尝试.
我希望我的javascript客户端代码是面向对象的,分离的关注点和单元可测试的.我想用模拟NotebookView测试NotebookController,反之亦然.这意味着我不能只在NotebookController中实例化NotebookView.我也是
在Java中,选择是自然的:使用Spring.但这似乎不是JavaScript-y.什么是正确的做法?
有时候,精通J2EE的人会看到ASP.NET并且想知道,将应用程序部署为单个部件的支持在哪里?JSP/Servlet应用程序可以部署为WAR文件,其中包含该单个存档中的所有页面,内容,元数据和代码.战争文件可以版本化,轻松移动.可以确保整个应用程序包含在一个单元中.
这不是ASP.NET的主流方法.人们做什么?他们是否诉诸复制目录和所有无数文件?这对ASP.NET开发人员来说不是问题吗?
(这是一种欺骗,因为我会建议我自己的答案)
有没有办法禁用启动asp.net应用程序时弹出的恼人的气球通知?这是我正在谈论的图片:
在Jesse Liberty的Programming C#(第142页)中,他提供了一个示例,他将对象转换为接口.
interface IStorable
{
...
}
public class Document : IStorable
{
...
}
...
IStorable isDoc = (IStorable) doc;
...
Run Code Online (Sandbox Code Playgroud)
这有什么意义,特别是如果对象的类实现了接口呢?
编辑1:澄清一下,我对转换的原因(如果有的话)感兴趣,而不是实现接口的原因.此外,这本书是他的2001年第一版(基于C#1,所以这个例子可能与以后版本的C#没有密切关系).
EDIT2:我在代码中添加了一些上下文
C#3.0 ASP.Net 2.0 IIS6
我有一个常规的[非https]页面.页面上有一个标准的ASP.Net表单.
但页面上有两个功能"区域".登录并"获取报价".登录页面需要POST到HTTPS,而页面的其余部分[包括"其他区域"]表单不能是HTTPS.在Java [JSP]和常规Html中,我们只有两种形式.一个发布到HTTPS,另一个不发布.
在ASP.Net [从一页]处理这个问题的方法是什么?我知道我可以链接到HTTPS login.aspx页面,但业务真的希望将上下文放在一起.
有任何想法吗?
谢谢,
我正在使用Notepad ++进行某些项目,而错过了Visual Studio的Ctrl+ X,Ctrl+ C功能,可以在没有选择文本时剪切或复制整个当前行.剪切线快捷方式似乎是Ctrl+ L,这不像Ctrl+ 那样方便,X复制快捷方式似乎是Ctrl+ D,Ctrl+ L,这更不方便.
虽然之前已经提出了类似的问题,但是没有提供在Notepad ++中执行此操作的方法,我无法在Notepad ++站点或其论坛上找到解决方案.
我正在使用JAXB来读写XML.我想要的是使用基本JAXB类进行编组,并使用继承的JAXB类进行解组.这是为了允许发送方Java应用程序将XML发送到另一个接收方Java应用程序.发送方和接收方将共享一个通用的JAXB库.我希望接收器将XML解组为特定于接收器的JAXB类,该类扩展了通用JAXB类.
例:
这是发件人使用的常见JAXB类.
@XmlRootElement(name="person")
public class Person {
public String name;
public int age;
}
Run Code Online (Sandbox Code Playgroud)
这是解组XML时使用的特定于接收器的JAXB类.接收器类具有特定于接收器应用的逻辑.
@XmlRootElement(name="person")
public class ReceiverPerson extends Person {
public doReceiverSpecificStuff() ...
}
Run Code Online (Sandbox Code Playgroud)
编组按预期工作.问题在于解组,Person尽管JAXBContext使用了子类的包名,它仍然是解组的ReceiverPerson.
JAXBContext jaxbContext = JAXBContext.newInstance(package name of ReceiverPerson);
Run Code Online (Sandbox Code Playgroud)
我想要的是解散ReceiverPerson.我已经能够做到这一点的唯一方法是删除@XmlRootElement从Person.不幸的是,这样做可以防止Person被编组.这就好像JAXB从基类开始并向下运行,直到找到@XmlRootElement具有相应名称的第一个.我试着加入createPerson()该方法返回ReceiverPerson到ObjectFactory但这并不能帮助.
我正在开发一个项目,要求我使用大于c中最大数值数据类型的数字.我正在考虑使用带有位字段的结构来表示这一点,但它已经闻起来很糟糕了.有人有任何提示吗?(不是在寻找一个图书馆,更多的是一个思考过程,以便做这样的事情.)
在C#3.5中是否有一种方法可以使用反射来设置对象属性?
例如:
MyObject obj = new MyObject();
obj.Name = "Value";
Run Code Online (Sandbox Code Playgroud)
我想obj.Name用反思来设定.就像是:
Reflection.SetProperty(obj, "Name") = "Value";
Run Code Online (Sandbox Code Playgroud)
有办法做到这一点吗?
asp.net ×3
c# ×3
.net ×2
java ×2
archive ×1
biginteger ×1
c ×1
casting ×1
deployment ×1
forward ×1
https ×1
interface ×1
javascript ×1
jaxb ×1
jsp ×1
notepad++ ×1
passive-view ×1
properties ×1
reflection ×1
sitemesh ×1
xml ×1