我已将我的应用程序从JSF 1.2迁移到2.2。
它在java.sun.com
域xmlns:f="http://java.sun.com/jsf/core"
上使用了XML命名空间。但是,Oracle's Java EE 7 tutorial正在使用xmlns.jcp.org
域上的XML命名空间
xmlns:f="http://xmlns.jcp.org/jsf/core"
。
推荐哪一个,为什么会改变?
答案 0 :(得分:11)
推荐哪一个?
继续/usr/local/Cellar/mysql/5.6.25/support-files/mysql.server start
域上的XML命名空间。这是自2013年Java EE 7以来新引入的(包括a.o. JSF 2.2,Servlet 3.1,CDI 1.1等)。请注意,这不仅会影响Facelets文件,还会影响faces-config.xml
,web.xml
,beans.xml
等XML配置文件。
xmlns.jcp.org
上的旧XML命名空间仍然存在向后兼容性,但支持最终将在未来的Java EE版本中消失。您应该尽快迁移代码库。使用"在所有文件中查找和替换应该是一项微不足道的任务。平均IDE提供的设施。
只有较旧的Mojarra 2.2.0 / 2.2.1版本存在与XML命名空间更改相关的错误,但这些错误不应在较新版本中显示。另见a.o。
为什么会改变?
因为自2010年以来Java不再来自Sun.请注意,他们很聪明,不能使它java.sun.com
或与当前拥有的公司紧密相关的东西。它现在很好地和独立地绑定到JCP(Java Community Process),它是真正负责管理Java(EE)规范的人。
答案 1 :(得分:5)
我简要总结了所有新的官方oracle命名空间:
const express = require('express')
const router = express.Router()
const mongoose = require('mongoose')
const Order = require('../models/orders')
const Product = require('../models/products')
router.get('/', (req, res, next) => {
Order.find()
.select('_id product quantity')
.then(docs => {
res.status(200).json({
count: docs.length,
orders: docs
})
})
.catch(err => {
error: err
})
})
router.post('/', (req, res, next) => {
Product.findById(req.body.productId)
.then(product => {
if (!product){
return res.status(404).json({
message: 'Product not found'
})
}
const order = new Order({
_id: mongoose.Types.ObjectId(),
quantity: req.body.quantity,
product: req.body.productId
})
return order.save()
})
.then(result => {
res.status(201).json({
message: 'Order stored',
createdOrder: result
})
})
.catch(err => {
console.log(err)
res.status(500).json({
error: err
})
})
})
router.delete('/:orderId', (req, res, next) => {
Order.remove({_id: req.params.orderId})
.then(order => {
res.status(200).json({
message: 'Order deleted'
})
})
.catch(err => {
console.log(err)
res.status(500).json({
error: err
})
})
})
router.get('/:orderId', (req, res, next) => {
Order.findById(req.params.orderId)
.then(order => {
res.status(200).json({
order: order
})
})
.catch(err => {
console.log(err)
res.status(500).json({
error: err
})
})
})
module.exports = router
我将此作为所有 .xhtml 文件的模板。详细信息可以在官方facelet标记库中找到:JavaServer Faces 2.2 Facelets Tag Library Documentation
希望这会有所帮助:)
答案 2 :(得分:1)
对于有名称空间混淆/问题的未来访问者:
我想强调一下找出要使用的命名空间的一般方法:
myfaces-impl-2.3.1.jar
)并找到标记库' s {{ 1}}或.tld
文件(您可以在.xml
目录下找到它)并使用那里提到的命名空间。 META-INF
或richfaces-components-ui-4.0.0.Final.jar
)并执行与上述相同的操作。如果实施具有primefaces-6.2.jar
(例如.tld
),那么您可以使用rich.tld
元素的值,例如<uri>
。如果实施具有<uri>http://richfaces.org/rich</uri>
(例如.xml
),那么您可以使用rich.taglib.xml
元素的值,例如<namespace>
我上面提到的与JSF严格相关,但总的来说也很好。关键是如果你使用实现JAR中的命名空间,那么你永远不会遇到问题。