@Path(value = "/user")
@Stateless
public class UserService {
@Inject
private UserManager manager;
@Path(value = "/create")
@GET
@Produces(value = MediaType.TEXT_PLAIN)
public String doCreate(@QueryParam(value = "name") String name) {
manager.createUser(name);
return "OK";
}
}
Run Code Online (Sandbox Code Playgroud)
这是用户管理器impl
public class UserManager {
@PersistenceContext(unitName = "shop")
private EntityManager em;
public void createUser(String name) {
User user = new User();
user.setName(name);
// skip some more initializations
em.persist(user);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是如果我没有将UserService标记为@Stateless,那么manager字段为null
但如果我标记@Stateless,我可以注入管理器字段,并且应用程序工作,因为我可以将数据保存到数据库中
只是想知道,这背后的原因是什么?
这是连接应用程序的首选方式吗?
好吧,我正在考虑将EntityManager拉出到生产者,以便它可以共享
我想写一个简单的加法器(giggles),它将每个参数相加并返回一个具有适当类型的和.目前,我有这个:
#include <iostream>
using namespace std;
template <class T>
T sum(const T& in)
{
return in;
}
template <class T, class... P>
auto sum(const T& t, const P&... p) -> decltype(t + sum(p...))
{
return t + sum(p...);
}
int main()
{
cout << sum(5, 10.0, 22.2) << endl;
}
Run Code Online (Sandbox Code Playgroud)
在GCC 4.5.1上,这似乎适用于2个参数,例如sum(2,5.5)返回7.5.但是,由于参数多于此,我得到的错误是sum()尚未定义.如果我这样声明sum():
template <class T, class P...>
T sum(const T& t, const P&... p);
Run Code Online (Sandbox Code Playgroud)
然后它适用于任意数量的参数,但sum(2,5.5)将返回整数7,这不是我所期望的.有两个以上的参数我假设decltype()必须进行某种递归才能推导出t + sum(p ...)的类型.这是合法的C++ 0x吗?或者decltype()仅适用于非可变参数声明吗?如果是这样的话,你会怎么写这样的功能?
我想知道在什么情况下你使用封装.这个问题的目的是协作.因此,当主题被封装时,请随意分享您自己的经验.
一些场景:
计算财产
public class Order {
private List<ListItem> listItems = new ArrayList<ListItem>();
public double getTotal() {
double total = 0;
for(ListItem listItem: listItems)
total += listItem.getQuantity() * listItem.getPropduct().getPrice();
return total;
}
}
Run Code Online (Sandbox Code Playgroud)
自我验证域对象
public class Person {
private String name;
public void setName(String name) {
if(StringUtils.isBlank(name)) {
throw new NotEmptyException("name", name);
}
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
对某些特殊行为使用其他类
public class Person {
private MutableInt id = new MutableInt();
/**
* Integer itself is immutable
*/
public Integer …Run Code Online (Sandbox Code Playgroud) 您可能听说过Fat Model/Thin Controller与Thin Model/Fat Controller的区别.我最近听说你可以在模型之间的某些逻辑进入服务层之间.这有多常见?你知道(或可以想到)任何说明它的真实例子吗?
所以根据Gu IValidatableObject.Validate()应该在控制器验证它的模型时(即之前ModelState.IsValid)调用,但是简单地使模型工具IValidatableObject似乎不起作用,因为Validate(..)不会被调用.
任何人都知道我是否还有其他东西可以连接起来让它起作用?
编辑:
这是所要求的代码.
public class LoginModel : IValidatableObject
{
[Required]
[Description("Email Address")]
public string Email { get; set; }
[Required]
[Description("Password")]
[DataType(DataType.Password)]
public string Password { get; set; }
[DisplayName("Remember Me")]
public bool RememberMe { get; set; }
public int UserPk { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var result = DataContext.Fetch( db => {
var user = db.Users.FirstOrDefault(u => u.Email == Email);
if (user == null) return …Run Code Online (Sandbox Code Playgroud) 任何人都有任何想法为什么以下代码会产生错误,请参阅函数后的其他注释以获取更多详细信息
function callee ([Hashtable]$arg0) {
[Hashtable]$hashtable = @{}
$hashtable = $arg0
$hashtable.add('passed', $True)
# $hashtable ######## toggle this line
$type = $hashtable.GetType()
Write-Host "$type"
return $hashtable
}
function caller {
[Hashtable]$hashtable = @{'00'='0'}
$hashtable = callee $hashtable ##### returns error here
$hashtable.add('returned', $True)
$hashtable
}
caller
Run Code Online (Sandbox Code Playgroud)
错误消息:无法将"System.Object []"类型的"System.Object []"值转换为"System.Collections.Hashtable"类型.
我收到了各种情况的错误,我试图将其缩小到一个易于重现的例子.看起来它正在将哈希表更改为对象数组,这就是为什么它不会返回它?它允许我修改哈希表并返回它但是当我尝试显示它时会改变它吗?这与我开始向被调用者函数添加代码时获得的效果相同?
我在dir有一个回购~/myRepo/.因为我想在多台机器上使用这个仓库,我想.git在我的目录中拥有该文件夹~/Dropbox/.
我知道,有一些能够创建一个文件~/myRepo,其中包含git文件夹的路径~/Dropbox/myRepo.git,但我忘记了哪个,并且无法在手册页中找到这些信息.
请不要告诉我简单ln -s的文件夹,我试过这个并认为它不切实际.
我希望能够采取如下序列:
my_sequence = ['foo', 'bar', 'baz', 'spam', 'eggs', 'cheese', 'yogurt']
Run Code Online (Sandbox Code Playgroud)
使用如下功能:
my_paginated_sequence = get_rows(my_sequence, 3)
Run Code Online (Sandbox Code Playgroud)
要得到:
[['foo', 'bar', 'baz'], ['spam', 'eggs', 'cheese'], ['yogurt']]
Run Code Online (Sandbox Code Playgroud)
这就是我想到的想法:
def get_rows(sequence, num):
count = 1
rows = list()
cols = list()
for item in sequence:
if count == num:
cols.append(item)
rows.append(cols)
cols = list()
count = 1
else:
cols.append(item)
count += 1
if count > 0:
rows.append(cols)
return rows
Run Code Online (Sandbox Code Playgroud) 通过Jerry Lee Ford Jr.的Powershell 2.0 for Absolute Beginner一书.本书的代码中有很多印刷错误,我已经能够通过并纠正(很棒的练习),但有一个我根本无法弄清楚.从配套网站下载了他的股票代码,他的代码抛出完全相同的错误.代码如下:
# *************************************************************************
#
# Script Name: GameConsole.ps1 (The PowerShell Game Console)
# Version: 1.0
# Author: Jerry Lee Ford, Jr.
# Date: January 1, 2007
#
# Description: This PowerShell script provides a listing of PowerShell
# game scripts and allows the player to play any game by
# entering its menu number.
#
# *************************************************************************
# Initialization Section
$menuList = @() #Stores an array containing information about script games
$playAgain = …Run Code Online (Sandbox Code Playgroud) 拥有一个仅为其工具提示存在的链接是一种好习惯吗?像这样:
<a title="10% off all widgets in September!">$90.00</a>
Run Code Online (Sandbox Code Playgroud)