我需要在驼峰套管中导出一组物品,为此我使用了一个包装.
班级本身:
[XmlRoot("example")]
public class Example
{
[XmlElement("exampleText")]
public string ExampleText { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这序列化很好:
<example>
<exampleText>Some text</exampleText>
</example>
Run Code Online (Sandbox Code Playgroud)
包装:
[XmlRoot("examples")]
public class ExampleWrapper : ICollection<Example>
{
[XmlElement("example")]
public List<Example> innerList;
//Implementation of ICollection using innerList
}
Run Code Online (Sandbox Code Playgroud)
然而,Example由于某种原因,这会将包裹的s 大写,我试图用它来覆盖它,XmlElement但这似乎没有达到预期的效果:
<examples>
<Example>
<exampleText>Some text</exampleText>
</Example>
<Example>
<exampleText>Another text</exampleText>
</Example>
</examples>
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我做错了什么或者有更简单的方法?
我正在尝试将 bean 注入自定义ConstraintValidator. 我遇到了一些事情:
最后一个似乎最适合我的情况,因为我们已经在使用 Spring (3.1.3.Release)。
我已将验证器工厂添加到 XML 应用程序上下文并启用了注释:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.example" />
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
</beans>
Run Code Online (Sandbox Code Playgroud)
验证器:
public class UsernameUniqueValidator implements
ConstraintValidator<Username, String>
{
@Autowired
private PersonManager personManager;
@Override
public void initialize(Username constraintAnnotation)
{
}
@Override
public boolean isValid(String value, ConstraintValidatorContext context)
{
if (value == null) return true;
return personManager.findByUsername(value.trim()) != null; …Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本,我想使用安装工具分发该脚本。我已将此脚本添加到entry_points我的setup.py.
从安装工具文档:
您指定的函数在不带参数的情况下调用,它们的返回值将传递给 sys.exit(),因此您可以返回错误级别或消息以打印到 stderr。
由于该方法将返回而不是退出,因此它变得更易于测试。出于可测试性的目的,我接受方法中默认为sys.argv. 到目前为止,一切都很好。
当 argparse 添加到混合中时,问题就出现了。当 argparse 无法解析 args 时,它会调用sys.exit. 现在我真的更希望 argparse 不这样做,因为这是由 setuptools 包装器处理的。我能想到解决这个问题的第一件事就是覆盖,argparse.ArgumentParser但后来我看到了这个:
# ===============
# Exiting methods
# ===============
def exit(self, status=0, message=None):
if message:
self._print_message(message, _sys.stderr)
_sys.exit(status)
def error(self, message):
"""error(message: string)
Prints a usage message incorporating the message to stderr and
exits.
If you override this in a subclass, it should not return -- it
should either exit or …Run Code Online (Sandbox Code Playgroud) 在我正在处理的项目中,我使用 git 和 eclipse,eclipse.project在项目根目录中创建一个文件。当我执行 a 操作时,git clean我不想删除此文件,因为我必须再次创建它。
我确实想git clean删除排除的文件和目录(因为编译的文件被排除)。
通常我会做适合我需要的事情,但是我每次都git clean -xdf必须排除该文件( )。.projectgit clean -xdf -e .project
简单地将 放入.project(全局)gitignore 文件中并不能解决问题,在其前面加上前缀!也不能完全解决这个问题,因为它随后会显示在 .gitignore 文件中git status。
所以我希望排除而不是忽略,但我找不到 git-clean-exclude 设置。有人遇到过这个问题吗?如果有,他们是如何解决的?
我正在尝试使用PackageLoader jinja2提供但我无法让它工作.
在我的app.yaml我已经声明了所需的库:
libraries:
- name: jinja2
version: latest
- name: setuptools
version: latest
Run Code Online (Sandbox Code Playgroud)
我可以创建的最小的例子:
import webapp2, sys
from jinja2 import Environment, PackageLoader
sys.path += ['lib/somepackage']
class Test(webapp2.RequestHandler):
def get(self):
env = Environment(loader=PackageLoader('common'))
self.response.write(env.get_template('test.html').render())
routes = [(r"/", Test)]
app = webapp2.WSGIApplication(routes, debug=True)
Run Code Online (Sandbox Code Playgroud)
该包common存在于目录中lib/somepackage,templates并且包含一个包含文件的包test.html.html文件只包含文本'test'.
当PackageLoader构建它provider始终是一个NullProvider在谷歌时,应用程序引擎.当我手动请求提供者时,我得到了一个DefaultProvider明显错误的地方.
要请求提供商我保证lib/somepackage是在sys.path通过转到目录,则:
>>> import pkg_resources
>>> provider = pkg_resources.get_provider('common')
>>> provider
<pkg_resources.DefaultProvider instance at 0x8490b2c> …Run Code Online (Sandbox Code Playgroud) 我正在使用 Michael Foord 的模拟库并对此有疑问。
我想模拟一个属性,所以我这样做:
eggs = mock.PropertyMock(return_value='eggs')
spam = mock.Mock()
type(spam).eggs = eggs
assert spam.eggs == 'eggs'
Run Code Online (Sandbox Code Playgroud)
这非常有效。但是我觉得这type()部分很丑,很想做这样的事情:
eggs = mock.PropertyMock(return_value='eggs')
spam = mock.Mock(eggs = eggs)
assert spam.eggs == 'eggs'
Run Code Online (Sandbox Code Playgroud)
最后一个例子没有按预期工作,spam.eggs变成了一个方法而不是一个属性。
我知道我可以使用mock.Mock(eggs = 'eggs')soeggs不是一种方法,但我希望能够断言该属性。:-)
我使用的是 Python 2.7,但我认为unittest.Mock也可以。
我正在寻找Google Apps Engine来托管一个php应用程序,到目前为止它看起来都很好.
我不太清楚的一个领域是Google Cloud SQL.我已在此处阅读了所有定价信息,https://developers.google.com/cloud-sql/pricing,但我没有看到任何有关免费使用配额的信息.如果它不存在我会感到惊讶(因为你可以免费做其他所有事情 - 至少对于alpha和beta应用程序而言).
我错过了什么吗?是否有免费等级?它可能包含在Google Apps Engine免费配额中吗?(我在https://developers.google.com/cloud-sql/pricing中没有看到它...)
对于学校作业,我收到了使用JNDI的Netbeans项目和使用Glassfish的JMS(3个开源版本).此应用程序使用的所有Glassfish库都由绝对路径引用,所有其他库(在"lib"文件夹中)由相对路径引用.
由于我的小组正在使用版本控制系统,因此"lib"文件夹包含在存储库中.这很好,因为它是一个小项目.但是Glassfish库存在问题,因为我是Linux用户,其他人是Windows用户.我们通过让Netbeans处理库路径来解决这个问题.
所选择的解决方案"有效",但不是最佳解决方案.我认为Maven会是一个更好的解决方案.
然而,"gf-client"库给出了问题.每当我使用Maven"gf-client"时,应用程序都会抛出异常:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
Run Code Online (Sandbox Code Playgroud)
两个库都有"3.1.2"作为版本.库的结构看起来相同,也都是MANIFEST.MF文件.但是两个文件的大小和md5sum不相等.
我已经尝试了所有可以在默认的Maven存储库中找到的"gf-client"库,但都没有.没有其他图书馆给我带来麻烦.
我想使用Liquibase为列添加唯一约束.当然我想检查是否存在使用前置条件的重复行.
我想出来了:
<preConditions>
<sqlCheck expectedResult="0">
select count(*)
from person
having ( count(username) > 1 )
</sqlCheck>
</preConditions>
Run Code Online (Sandbox Code Playgroud)
然而,这产生Empty set于MySQL和其他数据库.
我试着用expectedResult=""和expectedResult="null",但都不起作用.
我想实现一个 awaitable 并注意到__await__“需要”是一个生成器。
从PEP-492:
具有
__await__返回迭代器的方法的对象。...
__await__在本 PEP 的其余部分中,带有方法的对象称为 Future-like 对象。如果
__await__返回除迭代器以外的任何内容,则为 TypeError 。
根据我的经验,beforeawait是一个语句,yield from与作为生成器实现的协程一起使用。如今,python(我使用的是 3.5)具有使用async def语法的异步方法。因此,我认为该yield from语法是旧的/已弃用的。
所以我打破了解释器,看看这是否有效:
>>> class A:
... def __await__(self):
... yield from (asyncio.sleep(1).__await__())
... return 'spam'
...
>>> a = A()
>>> loop = asyncio.get_event_loop()
>>> loop.run_until_complete(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.5/asyncio/base_events.py", line 467, in run_until_complete
return future.result() …Run Code Online (Sandbox Code Playgroud) 我需要将漂亮的面孔与我的jsf 2.0,primefaces应用程序集成,但它会带来一些麻烦.
正如在入门中所提到的,我在我的web.xml中放置了以下内容,在lib文件夹中添加了所需的jar
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
我的web.xml中的其他项目
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
<context-param>
<param-name>org.primefaces.extensions.DELIVER_UNCOMPRESSED_RESOURCES</param-name>
<param-value>false</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误:
Invalid content was found starting with element 'async-supported'. One of '{"http://java.sun.com/xml/ns/javaee":init-param}' is expected
如果我<async-supported>从项目构建中删除 ,项目编译但映射不起作用.
pretty-config.xml 与入门时相同.
我需要在web.xml中提到映射文件的名称/路径,即pretty-config.xml吗?
编辑:
我正在使用Glassfish服务器3.
我注意到上下文变量似乎不适用于导入的模板.也许我做错了什么?
我有一个包含宏的模板和另一个导入宏并使用它的模板.
macro = ("{% macro some_macro() %}"
"{{ func('a') }}"
"{% endmacro %}")
use_macro = ("{% from 'macro' import some_macro %}"
"{{ some_macro() }}")
loader = jinja2.loaders.DictLoader({'macro': macro,
'template': use_macro})
env = jinja2.Environment(loader=loader)
template = env.get_template('template')
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试func在上下文中渲染模板时,它失败,因为func未定义:
rendered = template.render(func=lambda x: x)
Run Code Online (Sandbox Code Playgroud)
func在全局变量中它确实有效:
env.globals.update(func=lambda x: x)
rendered = template.render()
Run Code Online (Sandbox Code Playgroud)
这是预期的还是看起来像个bug?
python ×5
jinja2 ×2
argparse ×1
autowired ×1
c# ×1
camelcasing ×1
collections ×1
git ×1
git-clean ×1
gitignore ×1
glassfish ×1
jms ×1
jndi ×1
jsf ×1
jsf-2 ×1
liquibase ×1
maven-2 ×1
mocking ×1
php ×1
prettyfaces ×1
python-2.7 ×1
python-3.5 ×1
setuptools ×1
spring ×1
sql ×1
unit-testing ×1
wrapper ×1