我在Tomcat上有一个JSF 2.0应用程序,有很多<h:inputText>
字段可以在我的数据库中输入数据.某些字段不是必需的.
<h:inputText value="#{registerBean.user.phoneNumber}" id="phoneNumber">
<f:validateLength maximum="20" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
当用户将此字段留空时,JSF设置空字符串""
而不是null
.
如何在不检查每个String的情况下修复此行为
if (string.equals("")) { string = null; }
Run Code Online (Sandbox Code Playgroud) 我检查控制器中的ip-address
request.env['REMOTE_ADDR']
Run Code Online (Sandbox Code Playgroud)
这在我的测试环境中工作正常.但是在使用nginx + unicorn的生产服务器上,我总能得到127.0.0.1
.
这是我的网站的nginx配置:
upstream unicorn {
server unix:/tmp/unicorn.urlshorter.sock fail_timeout=0;
}
server {
listen 80 default deferred;
# server_name example.com;
root /home/deployer/apps/urlshorter/current/public;
location ^~ /assets/ {
gzip_static on;
expires max;
add_header Cache-Control public;
}
try_files $uri/index.html $uri @unicorn;
location @unicorn {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 4G;
keepalive_timeout 10;
}
Run Code Online (Sandbox Code Playgroud) 我的触发器有问题.在插入新行时,它将检查文章是否未售出.我可以在软件中做到这一点,但我认为这对DB来说更好.
-- Create function
CREATE OR REPLACE FUNCTION checkSold() RETURNS TRIGGER AS $checkSold$
BEGIN
SELECT offer_id FROM offer WHERE offer_id = NEW.offer_id AND date_sale IS NULL;
IF NOT FOUND THEN
RAISE EXCEPTION 'The Offer is Sold!';
END IF;
RETURN NEW;
END;
$checkSold$ LANGUAGE plpgsql;
-- Create trigger
Drop TRIGGER checkSold ON tag_map;
CREATE TRIGGER checkSold BEFORE INSERT ON tag_map FOR EACH ROW EXECUTE PROCEDURE checkSold();
INSERT INTO tag_map (tag_id,offer_id) VALUES (824,80);
Run Code Online (Sandbox Code Playgroud)
这是插入后的错误.
[WARNING ] INSERT INTO tag_map (tag_id,offer_id) VALUES (824,80) …
Run Code Online (Sandbox Code Playgroud) 我将在我的Rails3项目中使用RSpec和Factory girl.我已安装工厂女孩,但它没有找到factorys我有这个错误
Failure/Error: Factory.build(:user).should_be valid
No such factory: user
Run Code Online (Sandbox Code Playgroud)
spec/factories/user_factory.rb:
Factory.define :user do |u|
u.username 'otto'
end
Run Code Online (Sandbox Code Playgroud)
投机/ spec_helper.rb
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'factory_girl'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :rspec
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
end
Run Code Online (Sandbox Code Playgroud)
的Gemfile:
group :development, :test do
gem 'webrat'
gem "cucumber-rails"
gem "rspec-rails"
gem "rspec"
gem "autotest"
gem 'factory_girl'
end
Run Code Online (Sandbox Code Playgroud)
谢谢
我从JSF网站的编程开始.目前所有文件都有.xhtml结尾.当我去http:// localhost:8080/myProject/start.jsf一切都很好.但是当我将文件从start.xhtml重命名为start.jsf时,我变成了NoClassDefFound错误.
我的错是什么?
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud) 我正在与Glassfish合作开发JSF Projekt.我的验证工作正常,但我不会成为自定义错误消息.
//Class = User, package = devteam
@NotEmpty @Pattern(".+@.+\\.[a-z]+")
private String emailAddress;
Run Code Online (Sandbox Code Playgroud)
我的ValidationMessages.properties位于WEB-INF文件夹中,其中包含以下内容:
devteam.User.emailAddress=Invalid e-mail address
Run Code Online (Sandbox Code Playgroud)
谢谢.
我搜索了如何在我的JSF Web项目中进行用户身份验证的最佳方法.我在库存过流中找到了BalusC的这个非常好的例子(顺便说一下,谢谢你BalusC).但我不明白这个系统.
我写了一个注册页面.注册后,用户进入我的数据库.但是谁可以使用j_security_check从我的数据库中检查用户?
在我的webproject中,我没有用户和非用户的站点.当用户进入时,他会看到更多选项,例如他可以发布文本.我可以检查一下吗?我可以在登录时使用userdata保存用户类并检查:
if(user != null){
<h:inputText value="User Only Text" id="text" />
}
Run Code Online (Sandbox Code Playgroud)
但我认为这种方式并不是很优雅.另外我的问题是,让用户登录并在网页上显示有效用户的更多选项的最佳方式是什么,而不是非用户.
谢谢,抱歉我的英语不好.
我需要在我的rails3应用程序中验证名为phone_number的文件.此字段是可选的,但当用户输入phone_number时,我将检查格式.RSpec2测试运行正常但是当我转到sign_up视图并且没有触摸phone_number字段时,我变成"电话号码太短(最少6个字符)"和"电话号码无效"错误.
我的模特有什么问题?我的目标是验证phone_number,如果用户输入此号码,如果数字为空,我将在我的数据库中保存为零.
这是我的用户模型:
class User < ActiveRecord::Base
belongs_to :address
accepts_nested_attributes_for :address
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :confirmable, :lockable, :validatable
# Setup accessible (or protected) attributes for your model
attr_readonly :username
attr_accessible :email, :password, :password_confirmation, :remember_me, :phone_number, :username, :newsletter, :address_attributes
validates :username, :presence => true, :uniqueness => true, :length => {:minimum => 4, :maximum => 16 }, :format => { :with => /\A[a-z0-9][a-z0-9._-]*\z/i }
validates :phone_number, …
Run Code Online (Sandbox Code Playgroud) 我有一个独特产品的产品型号.因此,当用户购买此型号时,没有人可以再次购买,卖家不能与买家相同.
当我购买产品时,我称之为product.buy(买方)方法.但是当买方=卖方和date.sale!= nil时,此方法应该使模型无效.但这不起作用.我该如何解决?
def buy(buyer)
if self.user != buyer
if self.date_sale.nil?
self.date_sale = Time.now
self.buyer = buyer
else
# self.errors.add(:buyer, "article bougth") # Dont't work
end
else
# self.errors.add(:buyer, "seller can not buyer") # Dont't work
end
end
Run Code Online (Sandbox Code Playgroud)