小编Mik*_*Lin的帖子

你如何以正确的方式从JavaScript获取contextPath?

使用基于Java的后端(即servlet和JSP),如果我需要来自JavaScript的contextPath,建议的模式是什么,为什么?我可以想到一些可能性.我错过了吗?

1.将SCRIPT标记刻录到将其设置在某个JavaScript变量中的页面中

<script>var ctx = "<%=request.getContextPath()%>"</script>
Run Code Online (Sandbox Code Playgroud)

这是准确的,但在加载页面时需要执行脚本.

2.在一些隐藏的DOM元素中设置contextPath

<span id="ctx" style="display:none;"><%=request.getContextPath()%></span>
Run Code Online (Sandbox Code Playgroud)

这是准确的,并且在加载页面时不需要任何脚本执行.但是在需要访问contextPath时确实需要DOM查询.如果您非常关心性能,则可以缓存DOM查询的结果.

3.尝试通过检查document.URL或BASE标记在JavaScript中找出它

function() {
    var base = document.getElementsByTagName('base')[0];
    if (base && base.href && (base.href.length > 0)) {
        base = base.href;
    } else {
        base = document.URL;
    }
    return base.substr(0,
        base.indexOf("/", base.indexOf("/", base.indexOf("//") + 2) + 1));
};
Run Code Online (Sandbox Code Playgroud)

加载页面时不需要执行任何脚本,也可以根据需要缓存结果.但这只有在您知道上下文路径是单个目录时才有效 - 而不是根目录(/)或多个目录down(/mypath/iscomplicated/).

我倾向于哪种方式

我喜欢隐藏的DOM元素,因为它不需要在页面加载时执行JavaScript代码.只有当我需要contextPath时,我才需要执行任何操作(在这种情况下,运行DOM查询).

javascript jsp servlets

62
推荐指数
4
解决办法
13万
查看次数

如何将easy_install指向vcvarsall.bat?

我已经安装了MSVC++ 2010 Express,而我的vcvarsall.bat文件C:\Program Files\Microsoft Visual Studio 10.0\VC位于我的系统PATH中.当我运行时easy_install,它找不到vcvarsall.bat.

我需要在distutils.cfg文件中设置一些东西来指向我的MSVC++安装吗?

G:\>easy_install hg-git
install_dir C:\Python26\Lib\site-packages\
Searching for hg-git
Best match: hg-git 0.2.6
Processing hg_git-0.2.6-py2.6.egg
hg-git 0.2.6 is already the active version in easy-install.pth

Using c:\python26\lib\site-packages\hg_git-0.2.6-py2.6.egg
Processing dependencies for hg-git
Searching for dulwich>=0.6.0
Reading http://pypi.python.org/simple/dulwich/
Reading http://samba.org/~jelmer/dulwich
Reading http://launchpad.net/dulwich
Best match: dulwich 0.7.1
Downloading http://www.samba.org/~jelmer/dulwich/dulwich-0.7.1.tar.gz
Processing dulwich-0.7.1.tar.gz
Running dulwich-0.7.1\setup.py -q bdist_egg --dist-dir c:\docume~1\mlin\locals~1
\temp\easy_install-fhraep\dulwich-0.7.1\egg-dist-tmp-qozily
error: Setup script exited with error: Unable to find vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)

python distutils visual-studio-2010 easy-install

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

在Python中,None的计算结果小于零?

在Python中,None评估小于零?

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> None < 0
True
>>> None == 0
False
>>> None > 0
False
>>>
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?

我猜想这None将等于零(通过类型强制),或者所有这些语句都会返回False.

python python-2.x

30
推荐指数
2
解决办法
2万
查看次数

为什么Python的datetime.strftime('%w')和datetime.weekday()在一周的几天中使用不同的索引?

在Python中,将星期几datetime.strftime()显示为整数使用显示的结果与使用不同datetime.weekday().

>>> import datetime
>>> now = datetime.datetime.now()
>>> now.strftime('%A')
'Sunday'
>>> now.strftime('%w') # Day of the week as an integer.
'0'
>>> now.weekday() # Day of the week as an integer, a different way.
6
Run Code Online (Sandbox Code Playgroud)

使用时strftime(),字符串格式%w将星期日作为一周的第一天.随着weekday(),它是星期一.

为什么这两者有什么不同?

python datetime

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

Django的{{csrf_token}}仅输出令牌值,没有隐藏的输入标记

当我使用时,为什么不显示隐藏输入字段的标记{{ csrf_token }}

这是我模板中的一个片段:

<form action="." method="post">
{{ csrf_token }}
Run Code Online (Sandbox Code Playgroud)

我期待生成这样的东西:

<form action="." method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="0c90dab91e22382cbaa5ef375f709167">
Run Code Online (Sandbox Code Playgroud)

但相反,这是生成的HTML:

<form action="." method="post">
0c90dab91e22382cbaa5ef375f709167
Run Code Online (Sandbox Code Playgroud)

我已经做了很多次,并且在我的其他项目中工作正常,但我不知道这次我错过了什么.

我的views.py文件如下所示:

from django.shortcuts import render_to_response
from django.template import RequestContext

def home(request):
    return render_to_response('home.html',
                              context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在使用RequestContext.我的中间件类在settings.py文件中定义如下:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)
Run Code Online (Sandbox Code Playgroud)

所以我使用的是django.middleware.csrf.CsrfViewMiddleware.另外,我在Django 1.3.0上.有什么想法吗?

django django-csrf

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

基于内容自动调整Ext JS Window,最大可达maxHeight

使用Ext JS 4.0.2,我试图打开一个窗口,自动调整大小以适应其内容,直到达到高度限制,此时它会停止变大并显示滚动条.

这就是我正在做的事情

Ext.create('widget.window', {
    maxHeight: 300,
    width: 250,
    html: someReallyBigContent,
    autoScroll: true,
    autoShow: true
});
Run Code Online (Sandbox Code Playgroud)

首次渲染窗口时,它的大小足以容纳真正大的内容 - 大于maxHeight应允许的内容.如果我尝试调整它的大小,然后快速向下移动到300px的maxHeight.

如何在最初渲染窗口时将窗口限制为maxHeight?

extjs extjs4

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

基于接口的匿名类定义......也许?

我在Spring in Action一书中看到了这个Java片段,但我对语言结构并不熟悉.

new RowMapper() {
  public Object mapRow() throws SQLException, DataAccessException {
    Motorist motorist = new Motorist();
    motorist.setId(rs.getInt(1));
    motorist.setEmail(rs.getString(2));
    motorist.setPassword(rs.getString(3));
    motorist.setFirstName(rs.getString(4));
    motorist.setLastName(rs.getString(5));
    return motorist;
  }
}
Run Code Online (Sandbox Code Playgroud)

根据Spring文档,RowMapper是一个接口.它看起来像一个基于RowMapper接口的匿名类定义.该new关键字有点令人困惑,让我想知道这是否也创建了一个匿名类的实例.我猜是的,因为如果类没有名称,你将如何定义它的行之后创建一个实例?

任何人都可以证实我的猜测:

  • 这是一个基于RowMapper接口的匿名类定义,和
  • 它创建该类的单个实例?

java

12
推荐指数
2
解决办法
2万
查看次数

Ext JS是jQuery的超集吗?

所以jQuery处理DOM操作,事件处理和特殊效果.Ext JS也是这样做的,还有很多内置的UI组件.

这是问题所在. 有没有什么实质的jQuery有Ext JS没有?

这是上下文.我一直想知道人们使用Ext JS和jQuery的原因是什么.一些猜测:

  • 他们对jQuery感觉更舒服,但需要Ext JS的额外功能
  • 他们有一个已经使用jQuery生产的网站,需要添加Ext JS,并且不想重写已有的内容
  • 有一些jQuery具有Ext JS没有的东西

jquery extjs

10
推荐指数
2
解决办法
894
查看次数

如何将一个字符和一个"组合重音"组合成一个字符?

如何将一个字符和一个"组合重音"组合成一个字符?

我正在使用一个短语,用户进入一个网页并将其提交到法语 - 英语词典.有时字典查找会失败,因为大多数重音字符有两种表示形式.例如:

  • é可以用一个字符来完成:( \xE9带有急性的拉丁文小写字母e).
  • 但它也可以用两个字符表示:e+ \u0301(结合锐音).

我总是希望将前者(单个字符)提交到字典中.

现在,我正在通过用等效的单个字符替换我找到的每个两个字符的出现来做到这一点.但是,当它从输入字段中获取时,是在JavaScript中还是在浏览器中有更简单(即单行)的方式吗?

function translate(phrase) {
    // Combine accents into a single accented character, if necessary.
    var TRANSFORM = [
        // Acute accent.
        [/E\u0301/g, "\xC9"], // É
        [/e\u0301/g, "\xE9"], // é

        // Grave accent.
        [/a\u0300/g, "\xE0"], // à
        [/e\u0300/g, "\xE8"], // è
        [/u\u0300/g, "\xF9"], // ù

        // Cedilla (no combining accent).

        // Circumflex.
        [/a\u0302/g, "\xE2"], // â
        [/e\u0302/g, "\xEA"], // ê
        [/i\u0302/g, "\xEE"], // î
        [/o\u0302/g, "\xF4"], // ô …
Run Code Online (Sandbox Code Playgroud)

javascript unicode normalize utf-8 internationalization

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

创建新的XMLGregorianCalendar时忽略DatatypeConfigurationException

在创建这样的新XMLGregorianCalendar实例时,我是否真的需要处理DatatypeConfigurationException异常,还是可以安全地抑制它?

try {
    header.setRequestDateTime(
                DatatypeFactory.newInstance().newXMLGregorianCalendar(
                        new GregorianCalendar()));
} catch (DatatypeConfigurationException e) {
    // pass
}
Run Code Online (Sandbox Code Playgroud)

我对文档的解释和一些粗略的逻辑说,除非我给它一些不好的输入,否则这不会引发异常.在上面的例子中,情况并非如此.以下是JavaDocs对此的评价:

如果存在由DATATYPEFACTORY_PROPERTY指定的系统属性"javax.xml.datatype.DatatypeFactory",则实例化具有属性值的名称的类.在实例化过程中抛出的任何异常都被包装为 DatatypeConfigurationException.

我是否正确地认为我可以安全地抑制此检查异常?

java exception-handling jax-ws

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