小编sie*_*z0r的帖子

XMLSerializer保持集合中的项目大写

我需要在驼峰套管中导出一组物品,为此我使用了一个包装.

班级本身:

[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)

谁能告诉我我做错了什么或者有更简单的方法?

c# collections camelcasing xml-serialization wrapper

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

在 JSF 中使用 Spring 的 LocalValidatorFactoryBean

我正在尝试将 bean 注入自定义ConstraintValidator. 我遇到了一些事情:

  • 验证 API-1.1.0 支持 CDI(测试版可用)
  • Hibernate Validator 5 似乎实现了validation-api-1.1.0(Alpha可用)
  • 使用 Seam 验证模块
  • 使用 Spring 的 LocalValidatorFactoryBean

最后一个似乎最适合我的情况,因为我们已经在使用 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)

jsf spring dependency-injection autowired bean-validation

5
推荐指数
1
解决办法
3825
查看次数

将 argparse 与安装工具入口点结合使用

我正在编写一个脚本,我想使用安装工具分发该脚本。我已将此脚本添加到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)

python setuptools python-2.7 argparse

5
推荐指数
1
解决办法
2590
查看次数

默认情况下从 git clean 中排除文件

在我正在处理的项目中,我使用 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 设置。有人遇到过这个问题吗?如果有,他们是如何解决的?

git gitignore git-clean

5
推荐指数
1
解决办法
2643
查看次数

无法在Google App Engine上使用jinja2 PackageLoader

我正在尝试使用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)

python google-app-engine jinja2

4
推荐指数
1
解决办法
3380
查看次数

Mock 构造函数中的 Python PropertyMock

我正在使用 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也可以。

python unit-testing mocking

4
推荐指数
1
解决办法
6918
查看次数

Google Cloud SQL结算和免费配额的详细信息

我正在寻找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中没有看到它...)

php google-app-engine google-cloud-datastore

4
推荐指数
1
解决办法
2648
查看次数

Glassfish应用程序不使用maven库(gf-client)

对于学校作业,我收到了使用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"库,但都没有.没有其他图书馆给我带来麻烦.

maven-2 jndi jms glassfish

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

Liquibase唯一约束的前提条件

我想使用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",但都不起作用.

sql liquibase preconditions

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

__await__ 需要是生成器吗?

我想实现一个 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)

python python-asyncio python-3.5

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

无法将prettyfaces与jsf集成

我需要将漂亮的面孔与我的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.

jsf-2 prettyfaces

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

Jinja2渲染上下文未应用于导入的模板

我注意到上下文变量似乎不适用于导入的模板.也许我做错了什么?

我有一个包含宏的模板和另一个导入宏并使用它的模板.

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 jinja2

0
推荐指数
1
解决办法
987
查看次数