似乎有许多不同的方法在JavaScript中执行OO.
我喜欢:
function ClassA(){};
ClassA.prototype={
someFunc:function(a,b,c){},
otherFunc:function(){}
}
var c=new ClassA();
Run Code Online (Sandbox Code Playgroud)
并且从未使用过超出此功能的功能(尽管是一个熟练的OOer).我怀疑这是老式的,因为我经常看到新的闪烁变体,这让我想知道我是否选择了最好的方法.例如,你可以在构造函数方法中创建魔法来创建私有变量和访问器方法,我认为(直到最近)是不可能的.子类化怎么样?我不知道如何实现这一点,但它现在必须具有某种共同模式.
你是怎么做到的,为什么?
我试图在Django模板中分配一些javascript变量.
我遇到的问题是我正在分配的值正在正确地写入页面(我可以在页面源中看到它们),但仍然会出现null.
我这样做:
<script type="text/javascript">
var coords = [];
{% for i in item_list %}
coords.push([ {{i.x}}, {{i.y}} ]);
{% endfor %}
</script>
Run Code Online (Sandbox Code Playgroud)
这是生成的页面源:
coords.push([ -320.435118373, -149.333637576 ]);
coords.push([ -120.41321373 , -329.312376 ]);
...
Run Code Online (Sandbox Code Playgroud)
它似乎是完全有效的javascript,但是,使用Firebug查看其值coords,这就是生成的:
[[null, null], [null, null], [null, null]...[null, null]]
Run Code Online (Sandbox Code Playgroud)
因此很明显,每个push()调用都正确进行,每次都会添加一个大小为2的新数组.但是,由于某种原因,数字文字都评估为null.
有谁知道如何才能正确使用这些值?
更新:似乎数组中的值都没有问题,直到我将它们传递给jQuery flot插件:
$.plot($('#mapWrapper'), coords, options);
Run Code Online (Sandbox Code Playgroud)
所以我想这与我使用Django模板的方式没有任何关系.不过,我很好奇问题是什么$.plot.
我在使用spring webflow 1.0和struts 1.3上传文件时遇到问题.
jsp是这样的:
<html:form action="/flowAction" method="post" enctype="multipart/form-data">
<!-- snip -->
<html:file property="file" name="attachDocumentsForm" size="50"/>
<!-- snip -->
</html:form>
Run Code Online (Sandbox Code Playgroud)
表格是这样的:
public class AttachDocumentsForm extends SpringBindingActionForm {
// note, SpringBindingActionForm extends struts' ActionForm
private FormFile file;
//snip
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,当我提交表单时,该file字段始终是null.表单上的其他字段填写正确,如果我仔细检查RequestContext,我可以发现文件深埋在那里的一些数据结构.
这是我可以获得附件的可怕丑陋方式:
// 'context' is the RequestContext
ServletExternalContext servletExternalContext = (ServletExternalContext) context.getExternalContext();
ActionForm form = (ActionForm) servletExternalContext.getRequest().getAttribute("actionForm");
FormFile file = (FormFile) form.getMultipartRequestHandler().getFileElements().get("file");
Run Code Online (Sandbox Code Playgroud)
我注意到MultipartRequestHandler我的表单上有null,并且我怀疑这可能是问题的一部分,但我已经尝试用一个CommonsMultipartRequestHandler无效的实例来填充它.
我需要做些什么才能file正确填充字段?
我正在使用Java中的Web应用程序,它通过AJAX调用从servlet获取数据.
此应用程序具有多个页面元素,可以以相当快的速度从服务器获取新数据.
对于很多用户来说,服务器上的需求有可能达到相当高的水平,所以我很好奇:
哪种方法提供最佳性能:
许多servlet(每种类型的数据请求一个)?
要么:
一个可以处理所有请求的servlet?
我正在使用Spring Web Flow 2.0开发一个项目.
我试图对以决策状态开始的流进行单元测试.决策状态检查对象上的对象的值conversationScope.我无法弄清楚如何conversationScope在单元测试中插入一个值.
我试过了:
getConversationScope().put("someName", value);
MockExternalContext context = new MockExternalContext();
startFlow(context);
Run Code Online (Sandbox Code Playgroud)
但是,似乎当我调用startFlow(context)该值时会被清除.
我也尝试过:
MockExternalContext context = new MockExternalContext();
setCurrentState("someDecisionState");
resumeFlow(context)
Run Code Online (Sandbox Code Playgroud)
但是测试失败并且错误地告诉我,我无法从决策状态恢复,只能从视图状态恢复.
有谁知道如何插入模拟值,conversationScope以便我可以测试这些情况?
我正在为我的预申请构建支持页面.
我遇到的问题是页面上的内容非常小,因此用户必须手动放大才能阅读.
我已经制作了这个页面,因此没有任何东西可以看到非常宽或高,但出于某种原因,当你第一次在Pre上导航时,一切都被"缩小"了.
我注意到维基百科等网站的版本已经完全针对Pre进行了优化.如何使我的网页以维基百科的方式开始"全尺寸"?
更新:
我目前正在测试的极其简单的页面.
在上面的页面中,我尝试将每个元素的宽度设置为310px和100%,结果始终相同.
我想我可以通过给所有东西一个静态宽度然后让一切都使用非常大的字体来实现这一点.我只是猜测有一种"更好的方法",即某种方式让浏览器知道它不需要开始缩小到"普通"网页的大小(似乎默认缩放大约1024px宽,即使实际rez是320px).
我正试图在我的django应用程序中添加slug到url,就像SO一样.
目前,我的网页可以正常使用这样的网址:
http://example.com/foo/123/
Run Code Online (Sandbox Code Playgroud)
我想像这样添加'slugified'网址:
http://example.com/foo/123/foo-name-here
Run Code Online (Sandbox Code Playgroud)
通过简单地修改urlconf并向view函数添加一次性值,我可以让它工作得很好:
#urls.py
ulpatterns = patterns('project.app.views',
url(r'^foo/(?P<foo_id>\d+)/(?P<name_slug>\w+)/$', 'foo_detail', name='foo_detail'),
)
#views.py:
def foo_detail(request, foo_id, name_slug):
# stuff here, name slug is just discarded
Run Code Online (Sandbox Code Playgroud)
用slug visting url工作得很好.
但是,我的问题是我正在使用的时候@models.permalink.
对于我的Foo模型,我曾经有以下,它工作得很好:
@models.permalink
def get_absolute_url(self):
return ('foo_detail', [str(self.id),])
Run Code Online (Sandbox Code Playgroud)
但是,在我更改之后,每当我调用{{ foo.get_absolute_url }}模板时,结果总是一个空字符串.
我尝试了以下两个替换get_absolute_url,但两个都没有工作:
from django.template.defaultfilters import slugify
# attempt 1
@models.permalink
def get_absolute_url(self):
return ('foo_detail', [str(self.id), slugify(self.name)])
# attempt 2
@models.permalink
def get_absolute_url(self):
return ('foo_detail', (), {
'foo_id': str(self.id),
'name_slug': slugify(self.name),
})
Run Code Online (Sandbox Code Playgroud)
请注意,如果我 …
我疯了,试图找出如何使这项工作.代码看起来大致如下:
function onDropDownChanged() {
$("#updatePanel").load(
"myUrl",
{ id: $("#myDropDown option:selected").val() },
onPanelLoaded
);
}
function onPanelLoaded() {
$("#theTextInput").focus();
}
$(document).ready(function() {
$("#myDropDown").change(onDropDownChanged);
}
Run Code Online (Sandbox Code Playgroud)
第一次触发更改处理程序时,它会执行ajax更新,并且文本框会被聚焦.
但是,在后续更改中,它继续执行ajax更新,但文本框永远不会再次聚焦.
我发现,如果在onDropDownChanged,我$("#updatePanel").empty()在ajax调用之前添加,文本框将始终聚焦.问题是整个表格消失一秒钟,导致丑陋的闪光.鉴于ajax应该让这样的事情很好,这不是我想要使用的解决方法.
我有点惊讶的是python datetime .isoformat()函数没有返回正确的信息.当为fromtimestamp()方法提供时区时,该函数正确返回ISO 8601格式的字符串.但是,在计算结果时会忽略时区.注意:
13:29 msimsonnet:~$ python
Python 2.7.1 (r271:86832, Jan 26 2011, 13:56:46)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Running with pythonstartup.py
>>> import pytz,datetime
>>> datetime.datetime.fromtimestamp(1303876413).isoformat()
'2011-04-26T23:53:33'
>>> ny = pytz.timezone('America/New_York')
>>> sf = pytz.timezone('America/Los_Angeles')
>>> datetime.datetime.fromtimestamp(1303876413,ny).isoformat()
'2011-04-26T23:53:33-04:00'
>>> datetime.datetime.fromtimestamp(1303876413,sf).isoformat()
'2011-04-26T20:53:33-07:00'
>>>
Run Code Online (Sandbox Code Playgroud)
我是在EDT的计算机上运行的(格林威治标准时间-400).时间1303876413实际上是2011年4月26日晚上11:53:33,那时我第一次写了这个问题.请注意,在第一个示例中,只是请求.isoformat()返回'2011-04-26T23:53:33',这是错误的 - 它应该返回'2011-04-26T23:53:33-04:00',因为它返回本地时间并且Python知道时区.第二个例子是正确的,但我在纽约时区对象中干扰.第三个例子是错误的--Python正在保留时区,但它没有相应地调整时间.
附录:
如果您阅读了所有评论,您将看到我正在寻找的行为可以使用utcfromtimestamp而不是fromtimestamp
如何获取选择字段值而不是表单中的键?
我有一个表单,我让用户为公司选择一些用户的电子邮件.例如,我有一个这样的形式(模型形式的原因是它在一个formset中 - 但这对于现在来说并不重要):
class Contacts(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(Contacts, self).__init__(*args, **kwargs)
self.company = kwargs['initial']['company']
self.fields['emails'].choices = self.company.emails
# This produces stuff like:
# [(1, 'email@email.com'), ...]
emails = forms.MultipleChoiceField(required=False)
class Meta:
model = Company
Run Code Online (Sandbox Code Playgroud)
我想在视图中获取所有选定电子邮件的列表,如下所示:
form = ContactsForm(request.POST)
if form.is_valid():
form.cleaned_data['emails'][0] # produces 1 and not email
Run Code Online (Sandbox Code Playgroud)
没有任何get_emails_display()方法,例如在模型中.此外,一个建议form.fields['emails'].choices不起作用,因为它提供了所有选择,而我需要类似的东西form.fields['emails'].selected_choices?
任何想法,或者让我知道它是否不清楚.
django ×3
java ×3
javascript ×3
python ×3
jquery ×2
ajax ×1
django-urls ×1
file-upload ×1
flot ×1
html ×1
iso8601 ×1
oop ×1
palm-pre ×1
permalinks ×1
servlets ×1
spring ×1
struts ×1
webos ×1